我想获得有关指定参数的指定返回类型,如下所示。
function Fetch(isAsync:boolean){
return isAsync ? AsyncGet : Get;
}
如果应用程序运行let func = Fetch(true),则它期望func为AsyncGet类型,但返回值类型为AsyncGet |得到。
我无法调用func(),因为它具有来自AsyncGet和Get的不兼容签名。
我该如何实现?
答案 0 :(得分:0)
我认为您想要函数重载:
function Fetch(isAsync:true): AsyncGet;
function Fetch(isAsync:false): Get;
function Fetch(isAsync:boolean): AsyncGet | Get{
return isAsync ? AsyncGet : Get;
}
答案 1 :(得分:0)
您可以使用conditional types
function Fetch<T extends boolean>(isAsync: T): T extends true ? AsyncGet : Get {
// ....
}