Illie

TS. 다양한 Class 본문

JAVASCRIPT/타입스크립트

TS. 다양한 Class

(*ᴗ͈ˬᴗ͈)ꕤ*.゚ 2022. 7. 2. 17:42

1. Class

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

const nico = new Player("nico", "las", "니코")

// ERR(firstName은 private 이므로...)
nico.firstName

 

2. Abstract class(추상클래스)

- 다른 클래스가 상속받을 수 있는 클래스

- 직접 인스턴스 생성 불가능

abstract class User {
    constructor(
        private firstName:string,
        private lastName:string,
        public nickName:string,
    ){}
}

class Player extends User {}

// Allowed
const nico = new Player("nico", "las", "니코")

// ERR (abstract class)
const nico2 = new User("nico", "las", "니코")

 

3. Abstract class & Abstract method

abstract class User {
    constructor(
        private firstName:string,
        private lastName:string,
        public nickName:string,
    ){}
    getFullName(){
        return `${this.firstName} ${this.lastName}`
    }
}

const nico = new Player("nico", "las", "니코")

// Allowed
nico.getFullName()
abstract class User {
    constructor(
        private firstName:string,
        private lastName:string,
        public nickName:string,
    ){}
    private getFullName(){
        return `${this.firstName} ${this.lastName}`
    }
}

const nico = new Player("nico", "las", "니코")

// ERR
nico.getFullName()

 

4. protected vs private

- private: 인스턴트 밖에서 접근할 수 없고 다른 클래스에서도 접근 불가능

- protected: 인스턴트 밖에서 접근할 수 없지만, 다른 클래스에서 접근 가능

 

5. Class 활용

type Words = {
    [key: string]: string
}

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
    ){}
}

const kimchi= new Word("kimchi", "한국의 음식")

const dict = new Dict()

dict.add(kimchi)
dict.def("kimchi")

'JAVASCRIPT > 타입스크립트' 카테고리의 다른 글

TS. Interfaces  (0) 2022.07.10
TS. Function  (0) 2022.06.29
TS. 심화문법  (0) 2022.06.29
Comments