이 글은 제가 타입챌린지를 하면서 해석한 내용을 적는 글입니다. 틀린 내용이 있으면 댓글 달아주시면 감사하겠습니다.
https://github.com/type-challenges/type-challenges/blob/main/questions/00268-easy-if/README.md
난이도가 생각보다 쉽습니다. 타입챌린지 문제를 5개 이상 풀어보신 분들은 답을 안보고 조금 더 고민해보시는 걸 추천합니다.
type If<C extends boolean, T, F> = C extends true ? T : F;
// test case
type cases = [
Expect<Equal<If<true, 'a', 'b'>, 'a'>>,
Expect<Equal<If<false, 'a', 2>, 2>>,
]
// @ts-expect-error
type error = If<null, 'a', 'b'>
type If : If 라는 타입을 정의한다.
<C extends boolean, T, F> : boolean형태인 C를 정의하고 T, F를 정의한다.
C extends true ? T : F; : C가 true이면, T를 리턴하고, 아니면 F를 리턴한다.
생각보다 되게 간단하다. 처음에는
type If<C, T, F> = C extends true ? T : F; 로 했는데 에러 케이스가 통과를 못했다.
type error = If<null, 'a', 'b'> 에 빨간줄이 그어져 있었다... 그래서 C가 null을 못 받도록 boolean을 상속해주었다.
'Language > Typescript' 카테고리의 다른 글
타입챌린지 : 898-Includes (easy) (0) | 2023.03.05 |
---|---|
타입챌린지 : 533-Concat (easy) (0) | 2023.03.04 |
타입챌린지 : 189-Awaited (easy) (0) | 2023.03.03 |
타입챌린지 : 43-Exclude (easy) (0) | 2023.03.02 |
타입챌린지 : 18-Length of Tuple (easy) (0) | 2023.03.02 |