我正在使用typescript 2.2.1
带编译错误的代码:
createNewUser(name): Promise<UserModel> {
return this.getRef().then(Ref => { //getRef() return Promise<number>
let newUser: UserModel = {
displayName: name,
ref: Ref
};
return this.database.insert(newUser).then(() => { //database.insert() return Promise<void>
return newUser;
});
});
}
这是编译器的错误:
输入'承诺&lt;数&GT;”不能分配给'Promise&lt;的usermodel&GT;”。类型'number'不能分配给'UserModel'类型。
代码没有编译错误:
createNewUser(name): Promise<any> {
return this.getRef().then(Ref => {
let newUser: UserModel = {
displayName: name,
ref: Ref
};
return this.database.insert(newUser).then(() => {
return newUser;
});
});
}
请注意,为了解决这个问题,我只更改了此方法的返回类型。 此代码在运行时也运行良好。
澄清:
createNewUser('test').then(result=>{
console.log(result); //result = { displayName: 'test', ref: 999 }
});
现在我的问题是,这是打字稿中的错误吗? 编译器实际上误认为嵌套Promise的返回类型。
答案 0 :(得分:0)
更新到Typescript 2.3或以上
根据@Gerrit的建议,更新到Typescript 2.3将解决此问题。我测试了它,它的工作原理。谢谢@Gerrit
此问题已在Typescript github
中讨论过