typescript - 如何扩展传递参数类型的函数的返回类型?
问题描述
我正在尝试定义一个从现有函数的返回类型扩展属性的接口。但是该函数的返回类型由参数类型定义。类似于下面的代码:
function doSomething<T: any>(myParameter: T): { myProperty: T };
interface MyInterface<A> extends ReturnType<typeof doSomething<A>> {
newProperty1: boolean;
newProperty2: boolean;
}
然后,当我使用接口时,我想推断函数的参数类型,比如
let something: MyInterface<number>;
导致类似的类型
{
myProperty: number,
newProperty1: boolean,
newProperty2: boolean,
}
我怎样才能做到这一点?
解决方案
可悲的是,我认为您不能重用doSomething
. 作为一种解决方法,您可以使用接口重新定义它。
interface MyCallSignature<T> {
(myParameter: T): {
myParameter: T
}
}
interface MyInterface<T> extends ReturnType<MyCallSignature<T>> {
newProperty1: boolean;
newProperty2: boolean;
}
declare let something: MyInterface<number>;
something.myProperty; // number
something.newProperty1; // boolean
something.newProperty2; // boolean
推荐阅读
- r - 计算数据框中每个条目的出现次数
- python - 为什么列表会导致问题
- python - 多表过滤计算
- python - 根据字符串长度对数据框列进行切片
- kubernetes - 从 Kubernetes 上运行的应用订阅云发布/订阅主题
- c# - 使用 MDLC 和 NDLC 跨线程的奇怪 NLog 行为
- sql - 如何修复具有三个条件的两个表的此内部联接上不存在列?
- psexec - PsExec -i 参数仅适用于控制台
- python - 如何使用 urllib 库从带有 CURL 的 Twiter Search API 检索 json 文件
- tivoli-work-scheduler - 用于搜索对象的 Tivoli 命令行