본문 바로가기

Web/TypeScript

[TypeScript] 객체지향 - Classes

* JavaScript는 제공하지 않는 기능들

private, public

class Player {
    constructor(
        private firstName:string,
        private lastName:string,
        public nickname:string
    ) {}
}

const seojin = new Seojin("seojin", "moon", "문");

seojin.firstName # error
seojin.nickname

 

abstract 클래스, abstract 메소드(클래스 안의 함수)

abstract class User {
    constructor(
        constructor(
        private firstName:string, # private property는 상속받는 클래스에서도 사용 불가
        private lastName:string,
        protected nickname:string # protected property는 상속받는 자식 클래스에서는 사용 가능
    ) {}
    abstract getNickName(): void # 반드시 상속받는 클래스에서 구현해야 함
    
    getFullName(){
        return `${this.firstName} ${this.lastName)`
    }
}

class Player extends User {
    getNickName() {
        console.log(this.nickname)
    }
}

const seojin = new User("seojin", "moon", "문") #error, abstract 클래스는 직접 인스턴스 생성 불가능

const seojin = new Player("seojin", "moon", "문")

 

Recap

type Words = {
    [key:string]: string #key 대신 다른 거 써도 ㄱㄴ
}

class Dict {
    private words: Words
    constructor() {
        this.words = {}
    }
    add(word: Word) { # 클래스를 타입처럼 사용 가능
        if(this.words[word.term] === undefined) {
            this.words[word.term] = word.def;
        }
    }
    def(term:string) {
        return this.words[term]
    }
}

class Word {
    constructor(
        public term: string,
        public def: string
    ) {}
}

 

'Web > TypeScript' 카테고리의 다른 글

[TypeScript] Interfaces  (0) 2024.07.07
[TypeScript] 다형성(Polymorphism)  (0) 2024.07.05
[TypeScript] 기본 문법 - 함수  (1) 2024.07.05
[TypeScript] 기본 문법 - Type  (1) 2024.07.04
[TypeScript] 를 쓰는 이유  (0) 2024.07.04