typescript - 使用附加参数扩展另一个 TypeScript 函数
问题描述
是否可以在 TypeScript 中定义函数类型并将其参数列表扩展为另一种类型(重载函数类型?)?
假设我有这种类型:
type BaseFunc = (a: string) => Promise<string>
我想用一个附加参数(b: number)
和相同的返回值定义另一种类型。
如果将来某个时候BaseType
添加或更改参数,这也应该反映在我的重载函数类型中。
这可能吗?
解决方案
您可以在剩余参数和扩展表达式中使用元组以及条件类型和条件类型的推理行为,以从签名中提取参数并重建新签名。
type BaseFunc = (a: string) => Promise<string>
type BaseWithB = BaseFunc extends (...a: infer U) => infer R ? (b: number, ...a:U) => R: never;
推荐阅读
- python - 如何在 Windows 10 中为 python 安装 gdal?
- amazon-web-services - 如何使用资源名称前缀使用预定义的一组标签来标记 AWS 资源
- excel - 为什么 Power Query 在加载到数据模型时不遵守输出表中的排序?
- ruby-on-rails - 如何使用 Rails 中的 Pagy gem 对多个模型进行分页?
- math - 如果发了x张牌并且知道牌组的组成,如何获得同花同花的概率?
- java - Java计算器类型的方程不起作用
- c++ - 使用自定义 new() 运算符和类时谁为 shared_ptr 的控制块分配内存
- kotlin - 在 KOTLIN 中获取请求
- javascript - 视频 html 标签上的 CORB 错误阻止视频内容显示
- reactjs - TypeError:无法解构“props.todo”的属性“名称”,因为它未定义。反应