Typescript Generic??
Generic은 선언 시점이 아닌 생성 시점에 타입을 명시하여 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법입니다. 한번의 선언으로 다양한 타입에 재상용이 가능하다는 장점이 있습니다.
<T> 는 제너릭을 선언할 때 관용적으로 사용되는 식별자이며, 타입 파라미터라 합니다.
- any & generic
//any 타입
export function getAny(arg: any): any {
return arg;
}
const result31 = getAny("철수");
const result32 = getAny(8);
const result33 = getAny(true);
console.log(result31);
console.log(result32);
console.log(result33);
//generic 타입
export function getGeneric<MyType>(arg: MyType): MyType {
return arg;
}
const aaa: string = "철수";
const bbb: number = 8;
const ccc: boolean = true;
const result41 = getGeneric(aaa);
const result42 = getGeneric(bbb);
const result43 = getGeneric(ccc);
console.log(result41);
console.log(result42);
console.log(result43);
any타입은 모든 타입을 열어놓은 javacript와 같습니다. 그런데 generic을 사용하게 된다면 타입에 따라 변경됩니다.
//any
// prettier-ignore
export function getAnyReverse(arg1: any, arg2: any, arg3: any): [any, any, any] {
return [arg3, arg2, arg1];
}
const result5 = getAnyReverse("철수", "다람쥐초등학교", 8);
console.log(result5); //[ 8, '다람쥐초등학교', '철수' ]
//generic
// prettier-ignore
export function getGenericReverse<MyType1, MyType2, MyType3>(arg1: MyType1, arg2: MyType2, arg3: MyType3): [MyType3, MyType2, MyType1] {
return [arg3, arg2, arg1]
}
const result6 = getGenericReverse("철수", "다람쥐초등학교", 8);
console.log(result6); //[ 8, '다람쥐초등학교', '철수' ]
모두 같은 결과를 반환하지만 generic을 매개변수의 타입에 따라 변경됩니다.