我有一个示例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");
}
});
}
答案 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");
}
});
}