如何在TypeScript中获取构造函数的纯函数类型?
TypeScript工具类型:提取构造函数的纯函数类型
你可以通过TypeScript的条件类型结合infer关键字实现这个工具类型,具体代码如下:
interface SomeConstructor { new (name: string): number; age: number; } // 实现的工具类型 type GetFunctionFromConstructor<T> = T extends new (...args: infer Args) => infer Return ? (...args: Args) => Return : never; // 验证结果 type Ret = GetFunctionFromConstructor<SomeConstructor> // Ret: (name: string) => number
实现说明
- 用条件类型匹配构造函数的签名结构
new (...args: infer Args) => infer Return,通过infer分别提取构造函数的参数列表Args和实例返回类型Return。 - 当输入类型
T符合构造函数结构时,返回对应的普通函数类型(参数为Args,返回值为Return);若不符合则返回never类型。 - 该工具类型会自动忽略构造函数上的其他属性(比如示例中的
age字段),仅提取构造签名对应的纯函数类型。
内容的提问来源于stack exchange,提问作者Autumn
相关产品推荐
相关产品推荐

