Exclude
挑战
实现内置的Exclude<T, U>。从T中排除U指定的类型。例如:
type T0 = Exclude<"a" | "b" | "c", "a">; // expected "b" | "c"
type T1 = Exclude<"a" | "b" | "c", "a" | "b">; // expected "c"
解答
这里重要的细节是 TypeScript 中的条件类型 是可分配的。
所以当你在写T extends U且T是联合类型时,实际上发生的是 TypeScript 遍历联合类
型T并将条件应用到每个元素上。
因此,这个解答是非常直接的。我们检查T如果可以分配给U则跳过:
type MyExclude<T, U> = T extends U ? never : T;
评论