我已将代码简化为仅返回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;
答案 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; }