TypeScript 类型体操 —— Exclude

538 阅读1分钟

题目地址

Exclude

Exclude 是 TypeScript 中内置的一个类型修饰器,用于从一个类型中排除另一个类型。它可以通过使用 Exclude<T, U> 的形式来调用,其中 T 是要从中排除的类型,而 U 是要排除的类型。结果是一个新的类型,它包含了所有的 T 类型中不属于 U 类型的值。例如:

type A = Exclude<"a" | "b" | "c", "a">;
// type A = "b" | "c"

实现

type MyExclude<T, U> = T extends U ? never : T;

这里,我们使用了 TypeScript 的条件类型,使得如果 T 是 U 的子类型,那么 MyExclude<T, U> 类型的值就是 never,否则是 T。

这个 MyExclude 类型的行为与内置的 Exclude 类型是一致的。