[한입 TS 챌린지] Last Day
![[한입 TS 챌린지] Last Day](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1710682079742%2Fdd5c1403-052f-4521-8ccd-66fcdb17bbbc.png&w=3840&q=75)
강의 진도
- 조건부 타입 소개
- 분산적인 조건부 타입
- infer - 조건부 타입 내에서 타입 추론하기
관련 게시글
진행 날짜
2024년 2월 5일
Mission
Quiz 1.
다음 요구사항을 만족하는 IsProductKey 타입을 완성하세요
- IsProductKey 타입은 조건부 타입으로 다음 조건에 따라 각각 다른 타입으로 결정됩니다.
- T가 Product의 key(프로퍼티 이름)중 하나일 경우 결과는 true 타입이 됩니다.
- T가 Product의 key(프로퍼티 이름)중 하나가 아닐 경우 결과는 false 타입이 됩니다.
- 예를 들면 다음과 같습니다.
- ex) IsProductKey<"id"> 타입은 true 타입이 됩니다.
- ex) IsProductKey<"author"> 타입은 false 타입이 됩니다. ```ts interface Product { id: number; name: string; price: number; seller: { id: number; name: string; company: string; }; }
type IsProductKey = any;
#### 정답
```ts
type IsProductKey<T> = T extends keyof Product ? true : false;

Quiz 2.
다음 조건을 만족하는 Extract 타입을 구현하세요
- Extract 타입은 T로부터 U만 추출하는 타입입니다.
- ex) Extract은 boolean 타입이 됩니다.
- ex) Extract은 string 타입이 됩니다.
type Extract<T, U> = any;정답
type Extract<T, U> = T extends U ? T : never;
- ex) Extract은 string 타입이 됩니다.
Quiz 3.
배열 타입의 요소를 추출하는 InferArrayType 타입을 구현하세요
type InferArrayType<T> = any;
정답
type InferArrayType<T> = T extends (infer R)[] ? R : never;



