본문 바로가기

programming study/TypeScript

TypeScript(7)

본 내용은 Nomad Coders - TypeScript로 블록체인 만들기 강의를 토대로 작성하였습니다.

다형성을 활용한 클래스 정의 예시

  • 다형성이란, 다양한 형태를 가질 수 있도록 하는 것
    • 제네릭을 활용
// 제네릭이 지정되어 있어 해당 인터페이스가 적용된 객체는 value가 제네릭으로 넘겨받은 T로 적용되어야 함
interface CustomStorage<T> {
  [key: string]: T
}
​
// 클래스 정의
// 제네릭을 지정함으로써 new 키워드를 사용할 때, 특정 타입을 넘겨 받음
class LocalStorage<T> {
  // 넘겨받은 제네릭은 storage 프로퍼티에 지정된 인터페이스 CustomStorage에 전달 됨
   private storage: CustomStorage<T> = {}
   set(key: string, value: T) {
       this.storage[key] = value;
  }
   remove(key: string){
       delete this.storage[key];
  }
   get(key: string): T {
       return this.storage[key];
  }
   clear(){
       this.storage = {};
  }
}
​
// string만을 취급하는 storage
const stringStorage = new LocalStorage<string>();
// boolean만을 취급하는 storage
const booleanStorage = new LocalStorage<boolean>();
// number만을 취급하는 storage
const numberStorage = new LocalStorage<number>();
​
// pet interface
interface Pet {
 name: string;
 gender: 'male' | 'female';
 age: number;
 isVaccinated: boolean;
}
​
// 정의한 pet Interface의 type을 가지는 객체만을 취급하는 storage
const petStorage = new LocalStorage<Pet>();
// pet Interface에 맞게 해당 인스턴스를 사용해야함
petStorage.set('siru', {name: 'siru', gender: 'female', age: 7, isVaccinated: true});

Reference

Nomad Coders - TypeScript로 블록체인 만들기

'programming study > TypeScript' 카테고리의 다른 글

타입 단언과 타입 가드 - 타입 단언은 지양하자  (0) 2022.11.27
TypeScript(8)  (0) 2022.09.03
TypeScript(6)  (0) 2022.08.31
TypeScript(5)  (0) 2022.08.30
TypeScript(4)  (0) 2022.08.28