打字稿承诺泛型类型

时间:2016-12-10 18:23:54

标签: generics typescript

我有一个示例Promise函数,如下所示。成功后,我返回number,如果是,则返回string。编译器抱怨要为promise指定某种泛型类型。在这种情况下,我要指定什么类型?我是否要指定Promise<number>Promise<number | string>

function test(arg: string): Promise {
    return new Promise((resolve, reject) => {
        if (arg === "a") {
            resolve(1);
        } else {
            reject("1");
        }
    });
}

2 个答案:

答案 0 :(得分:51)

Promise的泛型类型应该对应于函数的非错误返回类型。该错误隐式为any类型,未在Promise泛型类型中指定。

例如:

function test(arg: string): Promise<number> {
    return new Promise<number>((resolve, reject) => {
        if (arg === "a") {
            resolve(1);
        } else {
            reject("1");
        }
    });
}

答案 1 :(得分:0)

function test(arg: string) {
   return new Promise((resolve: (value: number) => void, reject) => {
    if (arg === "a") {
        resolve(1);
    } else {
        reject("1");
    }
  });
}