请解释 TypeScript 内置工具类型 Exclude 的功能是什么?
考察说明
考查对 TypeScript 内置工具类型 Exclude 的理解与使用场景。
回答思路
- 【回答框架 1】Exclude<T, U> 是 TypeScript 内置的条件类型工具,用于从联合类型 T 中排除所有可赋值给 U 的类型,返回剩余类型组成的联合类型。其实现基于条件类型分发机制:T extends U ? never : T,当 T 为联合类型时会逐个成员判断并分发。
- 【回答框架 2】例如 Exclude<'a'|'b'|'c', 'a'> 结果为 'b'|'c';Exclude<string|number|boolean, boolean> 结果为 string|number。它常用于类型过滤、剔除特定类型的场景,配合 Pick、Omit 等工具类型使用。
- 【回答框架 3】注意 Exclude 仅处理联合类型,若 T 非联合类型则直接判断 T 是否 extends U,是则返回 never,否则返回 T。它不处理对象属性过滤,对象属性过滤应使用 Omit 或 Pick。
- 【回答框架 4】实际应用中,Exclude 可用于从函数参数联合类型中排除禁用选项,或从枚举联合中剔除特定成员,增强类型安全性和代码可维护性。
- 【关键点 1】Exclude<T, U> 从联合类型 T 中排除可赋值给 U 的类型,返回剩余联合类型。
- 【关键点 2】基于条件类型分发,逐成员判断 T extends U ? never : T。
- 【关键点 3】适用于联合类型过滤,对象属性过滤应使用 Omit。