我正在使用节点模块 fbgraph
来检索 Facebook 用户的数据并在我们的应用程序中创建帐户。
我有以下代码,它包含在异步函数中:
const newUser = await new Promise((resolve, reject) => {
graph.get(url, (err, res) => {
if (err) {
return reject(err);
}
const user = new User();
user.firstName = res.first_name;
user.lastName = res.last_name;
user.email = res.email;
return resolve(user);
});
});
this.register(newUser);
我无法将 newUser
变量传递给我的注册函数,并且收到此错误:
Argument of type '{}' is not assignable to parameter of type 'User'.
在记录 newUser
时,它似乎是我期望的正确的 User
对象,但是当我记录 newUser.constructor
时,它似乎是实际返回的是 [Function: User]
我对 Promise 并不是特别有经验,我觉得问题出在某个地方。非常感谢任何帮助!
最佳答案
Typescript 无法推断实际的 Promise 类型,因此默认为某种类型 - 在本例中 {}
.
您应该明确 Promise
并创建Promise<User>
类型即
const newUser = await new Promise<User>((resolve, reject) => {
//...
})
关于javascript - Promise 返回一个函数而不是一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50598499/