Generics
typescript의 function, class, interface, type을 사용시 여러 종류에 대해 호환을 맞춰야 하는 상황에서 사용
function
두 객체를 합쳐주는 함수를 만들 때, 두 객체가 어떤 타입이 올지 모르므로 any 타입 사용 가능
function merge(a:any, b:any): any {
return {
...a,
...b
};
}
const merged = merge({foo:1}, {bar: 1});
이런 방식을 사용하면 타입추론이 망가진다. 이럴때 generic을 사용한다.
제네릭 사용법
function merge<A, B>(a: A, b: B): A & B {
return {
...a,
...b
};
}
const merged = merge({foo:1}, {bar: 1});
<>안에 타입의 이름을 넣어서 사용하며, 이렇게 설정 시 제네릭에 해당하는 타입에는 뭐든지 들어오며서 사용할 때 타입이 망가지지 않는다.
이렇게 사용하면 함수의 파라미터로 넣은 실제 값의 타입을 활용한다.
function wrap<t>(param: T){
return{
param
}
}
const wrapped = wrap(10);
type을 any로 변하게 하지 않고 그대로 파라미터로 사용할 수 있다.
---------------------------
interface
interface Items<T> {
list: T[];
}
const items: Items<string> = {
list: ['a', 'b', 'c']
};
배열의 타입이 어떤 타입이어도 위 처럼 제네릭을 사용해 설정할 수 있다
type alias또한 똑같이 사용하면 된다.
---------------------------
Class