Exclude
约 177 字小于 1 分钟
2026-02-11
题目
实现内置的 Exclude<T, U> 类型,但不能直接使用它本身。
从联合类型
T中排除U中的类型,来构造一个新的类型。
例如:
type Result = MyExclude<'a' | 'b' | 'c', 'a'> // 'b' | 'c'解题思路
判断 T 的类型是否 是 U 的类型进行取舍即可。
答案
type MyExclude<T, U> = T extends U ? never : T验证
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>>,
]