이 글은 제가 타입챌린지를 하면서 해석한 내용을 적는 글입니다. 틀린 내용이 있으면 댓글 달아주시면 감사하겠습니다.
https://github.com/type-challenges/type-challenges/blob/main/questions/00043-easy-exclude/README.md
type MyExclude<T, U> = T extends U ? never : T;
// test cases
type cases = [
Expect<Equal<MyExclude<'a' | 'b' | 'c', 'a'>, 'b' | 'c'>>,
Expect<Equal<MyExclude<'a' | 'b' | 'c', 'a' | 'b'>, 'c'>>,
Expect<Equal<MyExclude<string | number | (() => void), Function>, string | number>>,
]
type MyExclude : MyExclude 라는 타입을 정의한다.
<T, U> : T와 U를 제네릭 인자로 사용한다.
T extends U ? never : T : extends는 === 이라고 생각하자. T와 U가 같으면 never(null과 비슷한 개념이라고 생각하자 다만, 실제 값은 들어가지 않는다)를 리턴하고 아니라면 T를 리턴한다.
'Language > Typescript' 카테고리의 다른 글
타입챌린지 : 268-If (easy) (0) | 2023.03.04 |
---|---|
타입챌린지 : 189-Awaited (easy) (0) | 2023.03.03 |
타입챌린지 : 18-Length of Tuple (easy) (0) | 2023.03.02 |
타입챌린지 : 14-First of Array (easy) (0) | 2023.03.02 |
타입챌린지 : 11-Tuple to Object (easy) (0) | 2023.03.01 |