可以弄清楚如何使TypeScript对返回的承诺感到满意

时间:2019-02-12 00:14:04

标签: typescript typescript-typings

我已将代码简化为仅返回promise函数的简单示例。 TypeScript 3.2给我的错误是:

  

错误:(1,7)TS2739:类型'()=> Promise <{}>'缺少类型'Promise <{hasErrored:boolean; }>':然后,捕获[Symbol.toStringTag]

关联的代码是

const fetchUserInfoPromise1: Promise<{ hasErrored: boolean }> = () => {
    return new Promise(function(resolve) {
        resolve({ id: 1, name: 'peter' });
    });
};
export default fetchUserInfoPromise1;

2 个答案:

答案 0 :(得分:3)

首先,fetchUserInfoPromise1是一个返回Promise而不是Promise本身的函数。

const fetchUserInfoPromise1 = (): Promise<{ hasErrored: boolean }> => { /* ... */ }

第二,返回类型定义中使用的type参数必须与要解析的类型参数匹配。返回的Promise应该用对象{ hasErrored: boolean }来解析,但是它用{ id: number, name: string }来解析。您需要确定要完成的任务。

示例:

const fetchUserInfoPromise1 = (): Promise<{ id: number, name: string }> => {
  return new Promise(function (resolve) {
    resolve({ id: 1, name: 'peter' });
  });
};

答案 1 :(得分:0)

嗯,它期待一个诺言,而您正在返回一个值。选择的答案很有意义。但是,如果您要声明这样的函数,则还有一个非常简单的使用异步的解决方案

checkIfTrue(): Promise<boolean>{ return true; }

然后将此功能更新为

async checkIfTrue(): Promise<boolean>{ return true; }