首页 > 解决方案 > 使用附加参数扩展另一个 TypeScript 函数

问题描述

是否可以在 TypeScript 中定义函数类型并将其参数列表扩展为另一种类型(重载函数类型?)?

假设我有这种类型:

type BaseFunc = (a: string) => Promise<string>

我想用一个附加参数(b: number)和相同的返回值定义另一种类型。

如果将来某个时候BaseType添加或更改参数,这也应该反映在我的重载函数类型中。

这可能吗?

标签: typescript

解决方案


您可以在剩余参数和扩展表达式中使用元组以及条件类型和条件类型的推理行为,以从签名中提取参数并重建新签名。

type BaseFunc = (a: string) => Promise<string>

type BaseWithB  = BaseFunc extends (...a: infer U) => infer R ? (b: number, ...a:U) => R: never;

推荐阅读