我正在使用节点模块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]
我对Promises并不是特别有经验,我觉得这个问题就在那里。非常感谢任何帮助!
答案 0 :(得分:2)
Typescript无法推断实际的承诺类型,因此默认为某种东西 - 在这种情况下为{}
。
您应该明确Promise
并创建Promise<User>
类型,即
const newUser = await new Promise<User>((resolve, reject) => {
//...
})