[TS] infer (타입 추론)
TIL
infer는 조건부 타입 내에서 특정 타입을 추론하는 키워드이다.ReturnType 구현함수 타입에서 반환값의 타입만 추출하는 ReturnType을 만들어보자.type ReturnType = T extends () => infer R ? R : never;type FuncA = () => string;type FuncB = () => number;type A = ReturnType; // stringtype B = ReturnType; // number동작 원리조건식 T extends () => infer R에서 infer R은 조건식을 참으로 만드는 최적의 R 타입을 추론하라는 의미다.타입 A를 계산하는 과정은 다음과 같다.1단계: 타입 변수 T에 FuncA가 할당된다.T = () => string2단..
[TS] 분산적인 조건부 타입
TIL
분산적인 조건부 타입type StringNumberSwitch = T extends number ? string : number;let a: StringNumberSwitch; // stringlet b: StringNumberSwitch; // number 위 조건부 타입에 Union을 할당해 보자.let c: StringNumberSwitch; // string | numbernumber | string은 number의 서브타입이 아니므로 number가 될 것 같지만, 실제로는 string | number가 된다. 동작 원리조건부 타입의 타입 변수에 Union 타입을 할당하면 분산적인 조건부 타입으로 동작한다.1단계: Union 타입 분리StringNumberSwitch은 다음과 같이 분리된다.Str..
[TS] 타입 조작 및 고급 타입 활용 연습
TIL
1. 조건을 만족하는 함수 타입 구현getSellersFromProducts 함수- 매개변수로 받은 Product 배열로부터, seller 객체만 추출해 새로운 배열로 반환- 반환값을 명시적으로 설정interface Product { id: number; name: string; price: number; seller: { id: number; name: string; company: string; };}function getSellersFromProducts(products: any): any { return products.map((product) => product.seller);}function getSellersFromProducts(products: Product[]..