![](/img/trans.png)
[英]TypeScript: Override Generic Types in Method<T> that inherit from a Class<T> fallback
[英]typescript Generic Function that inherit T
我要尝试向Function
添加一个方法。
问题是返回值不会自动继承 T。
interface Function { Promise <T> (...args: any[]): Promise<T>; } Function.prototype.Promise = async function <T> (this: Function, ...args: any[]): Promise <T> { return new Promise <T> ((resolve, reject) => { this(args).then((x: T) => resolve(x)).catch((e: any) => reject(e)); }); }
var test =(async()=> { return ""; }); // this return Promise<unknown> it should return Promise<string> test.Promise() // this should work, but I want the above to work instead // it should inherit the type automaticly test.Promise<string>()
您可以捕获使用this
参数调用的 function 的类型。 您还可以捕获参数的类型和返回类型,以更好地键入结果 function。
interface Function {
Promise<TReturn, TArgs extends any[]>(this: (...a: TArgs) => Promise<TReturn>, ...a: TArgs): Promise<TReturn>;
}
Function.prototype.Promise = async function <TReturn, TArgs extends any[]>(this: (...a: TArgs) => Promise<TReturn>, ...args: TArgs): Promise<TReturn> {
return new Promise<TReturn>((resolve, reject) => {
this(...args).then((x: TReturn) => resolve(x)).catch((e: any) => reject(e));
});
}
var test = (async () => {
return "";
});
// this return Promise<unknown> it should return Promise<string>
test.Promise()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.