타입을 모르지만 인자로 넘겨주는 타입에 따라 자동으로 타입이 설정되도록 하려면?? whatsapp 클론에서 useStore을 구현하다가 알게된 사실.
우선 아래 간단한 예시를 보자.
function identity<Type>(arg: Type): Type {
return arg;
}
let output = identity('haha')
// let output: string
identity
에 타입을 명시해주지 않아도 됨. 이걸 타입추론이라고도 함.
타입추론을 응용해 좀 더 복잡하게 만들어보자.
function getProperty<Type, Key extends keyof Type>(obj: Type, key: Key) {
return obj[key];
}
let x = { a: 1, b: 2, c: 3, d: 4 };
getProperty(x, "a");
getProperty(x, "m");
// Argument of type '"m"' is not assignable to parameter of type '"a" | "b" | "c" | "d"'.
pass된 인자로 타입이 자동 추론된다.