首页 > 解决方案 > 解析参数的返回类型被推断为对象?

问题描述

以下不会编译:

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] 类型“{}”不可分配给类型“字符串”。

为什么会这样?

标签: typescript

解决方案


您必须明确指定返回类型。

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(,您将看到 typescript 假定返回类型为Promise<{}>.


推荐阅读