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;
评论