在打字稿中,使用以下代码段时,编译器无法识别item1
的类型,它将分配为unknown(请参见将鼠标悬停在Typescript Playground上的var名称上
const getItem = () =>
new Promise((resolve) => {
return resolve('a title');
});
(async function() {
const item1 = await getItem();
const item2 = await getItem();
})();
答案 0 :(得分:3)
问题在于,无法通过传递给resolve方法的类型来推断Promise的类型。 resolve方法的类型从传递给Promise构造函数的泛型类型获取,而不是相反。同样,在这种情况下,您无需使用return
和resolve。
您可以通过以下两种方式之一解决此问题。
string
作为通用类型参数。使用Promise<string>((resolve) => { ...
,它将告诉打字稿您希望将字符串传递给resolve
函数。如果尝试通过其他方式调用resolve
,将会看到类型错误。Promise.resolve('a title');
之类的构造。这样,就可以推断出通用类型参数。