如何扩展SortingStrategy函数类型,为参数对象添加可选属性?
实现方式
你可以通过 TypeScript 的工具类型复用原类型的参数定义,不用重新编写全部属性,具体实现如下:
- 用
Parameters工具类型提取原SortingStrategy函数的参数类型 - 将提取到的参数类型与新增的可选属性做交叉类型
- 基于交叉后的参数类型,重新构造扩展后的函数类型
示例代码:
// 先导入原库的类型 import type { SortingStrategy, Transform } from '你的库名'; // 提取原函数的参数类型 type OriginalSortingArgs = Parameters<SortingStrategy>[0]; // 定义扩展后的参数:原参数 + 可选的 container 属性 type ExtendedSortingArgs = OriginalSortingArgs & { container?: HTMLElement | null; // 可根据需求调整 container 的具体类型 }; // 构造扩展后的 SortingStrategy 类型 type ExtendedSortingStrategy = (args: ExtendedSortingArgs) => ReturnType<SortingStrategy>;
如果要在代码里直接用扩展后的类型替换原别名,也可以简化成:
import type { SortingStrategy as OriginalSortingStrategy } from '你的库名'; type SortingStrategy = ( args: Parameters<OriginalSortingStrategy>[0] & { container?: HTMLElement | null; } ) => ReturnType<OriginalSortingStrategy>;
这样就能在完全复用原类型所有参数的基础上,新增可选的 container 属性,不用重复编写原类型的全部字段。
内容的提问来源于stack exchange,提问作者jordão França Barroso
相关产品推荐
相关产品推荐

