以下内容无法编译:
function P() {
return new Promise((resolve, reject) => {
const stringValue:string = "...explicit string...";
resolve(stringValue);
});
}
async function f() {
let s:string = "";
await P().then((res) => { s = res; });
}
错误出现在语句s = res
:
[ts]类型“ {}”不能分配给类型“字符串”。
为什么会这样?
答案 0 :(得分:1)
您必须明确指定返回类型。
function P(): Promise<string> {
return new Promise((resolve, reject) => {
const stringValue:string = "...explicit string...";
resolve(stringValue);
});
}
async function f() {
let s:string = "";
await P().then((res) => { s = res; });
}
当您不指定返回类型时,TypeScript假定P的返回类型为Promise<{}>
。您可以在https://www.typescriptlang.org/play/index.html处进行检查,在左侧键入代码,然后将鼠标放在P().then(
上,您会看到打字稿假定返回类型为Promise<{}>
。