打字稿:关于参数值返回多种类型

时间:2018-08-15 09:10:52

标签: typescript

我想获得有关指定参数的指定返回类型,如下所示。

function Fetch(isAsync:boolean){
  return isAsync ? AsyncGet : Get;
}

如果应用程序运行let func = Fetch(true),则它期望func为AsyncGet类型,但返回值类型为AsyncGet |得到。

我无法调用func(),因为它具有来自AsyncGet和Get的不兼容签名。

我该如何实现?

2 个答案:

答案 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 {
  // ....
}