알고리즘/Type Challenges
43 - Exclude
제주도랏맨
2023. 9. 6. 01:34
출처: Type Challenges, https://github.com/type-challenges/type-challenges/blob/main/README.ko.md
43 - Exclude
`T`에서 `U`에 할당할 수 있는 타입을 제외하는 내장 제네릭 `Exclude<T, U>`를 이를 사용하지 않고 구현하세요.
type Result = MyExclude<'a' | 'b' | 'c', 'a'> // 'b' | 'c'
풀이
type MyExclude<T, U> = T extends U ? never : T;
타입스크립트의 타입시스템은 유니온 타입을 분배시켜 처리한다.
예를 들어 `'a' | 'b' | 'c' extends 'a'`라면 이는 `'a' extends 'a' | 'b' extends 'a' | 'c' extends 'a'`로 처리된다.
따라서 `MyExclude<'a' | 'b' | 'c', 'a'>`는 `'b' | 'c'`가 된다.