我正在访问已解析的promise返回的对象的属性。
return new Promise((resolve) => {
// Get result
resolve(result)
}).then(r => console.log(r.id))
Typescript编译代码并且代码可以正常工作,但我的IDE抱怨r.id
[ts]属性'id'在类型'{}'上不存在。
处理此问题的'TypeScript'方法是什么? This question似乎有同样的问题,但我无法理解给定的解决方案。 This answer讨论了如何使用接口,但我不确定如何将其应用于then()
的{{1}}函数
答案 0 :(得分:4)
Typescript将无法通过Promise
的使用来告知resolve
的结果类型,您需要明确指定结果类型作为Promise
的通用参数:< / p>
new Promise<{ id: string }>((resolve) => {
// Get result
resolve(result)
}).then(r => console.log(r.id))
您可以将{ id: string }
替换为任何类型,因为奖励打字稿将检查是否使用正确的结果类型调用resolve
。
修改强>
我假设代替// Get result
,有一些更复杂的代码需要使用Promise
构造函数。如果您已经知道结果,那么您可以使用Promse.resolve(result)
来正确输入承诺,因为@BenjaminGruenbaum在评论中指出