성장에 목마른 코린이

TypeScript 7. Classes Recap + 챌린지 본문

TypeScript

TypeScript 7. Classes Recap + 챌린지

성장하는 코린이 2022. 7. 30. 11:01
728x90

type Words = {
  // object의 Type을 선언해야할 때
  [key:string] : string, // Words 타입이 string만을 property로 가지는 오브젝트라고 말해줌
}

class Dict {
  public words:Words // words를 initializer 없이 선언
  constructor() {
    this.words = {} // Constructor에서 수동으로 초기화 시켜줌
  }
  add(word:Word) { // Word 클래스를 타입처럼 사용 가능
    if(this.words[word.term] === undefined) {
      this.words[word.term] = word.def;
    }
  }
  delete(word:Word) { // Word 클래스를 타입처럼 사용 가능
    if(this.words[word.term].includes(word.def)) {
      delete this.words[word.term];
    }
  }
  update(word:Word) { // Word 클래스를 타입처럼 사용 가능
    if(this.words[word.term]) {
      this.words[word.term] = word.def;
    }
  }
}

class Word {
  constructor (
    public term : string,
    public def : string,
  ){}
  modifyDef(word:string) {
    this.def = word;
  }
  printWord(){
    return console.log(this);
  }
}

const kimchi = new Word("kimchi", "한국의 음식");
kimchi.modifyDef("김치")
kimchi.printWord;
const dict = new Dict();
dict.add(kimchi);
console.log(dict.words);
dict.update(kimchi);
console.log(dict.words);
dict.delete(kimchi);
console.log(dict.words);
Comments