5. Generics to Class
어떠한장바구니(Basket)에물건(Item)을넣어야한다고 가정을해봅시다. 이
때, 하나의장바구니에는모두동일한타입의물건이들어있어야합니다. 이경
우모든경우의수에해당하는장바구니를각각의클래스로만들어줘야하는
문제점이발생합니다.
class BookBasket { ... }
class CupBasket { ... }
class DollBasket { ... }
//...
이럴경우, 제네릭을사용하여하나의클래스에서타입을주입받아모든경우
의수에해당하는장바구니를만들수있습니다.
6. class Basket<T> {
private item: T[];
getItem(index: number): T {
return this.item[index];
}
}
아주간단한 Basket 클래스를만들어보았습니다. 일반클래스를정의할때
와는다르게 <T> 라는것이클래스이름옆에추가된것을확인하실수있는
데요, 해당클래스내에서사용할타입을 T 라는값으로받을수있게 되는것
입니다. 여기서 T 는별뜻이있는게 아니라Type의약자입니다. 이렇게 정의
한클래스를이용하여여러경우에해당하는장바구니를생성할수있습니다.
7. const bookBasket = new Basket<Book>();
const cupBasket = new Basket<Cup>();
const dollBasket = new Basket<Doll>();
new 키워드를통해인스턴스를생성할때정의할때와마찬가지로 <> 와함
께타입을지정하여인스턴스를생성해줍니다. ( Book , Cup , Doll 에대한
인터페이스정의는생략합니다.)