[英]Typescript: Specifying proper return type for resolve parameters in promises
[英]Typescript Nested Promises Return Type Mismatch
我正在使用打字稿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;
});
});
}
這是來自編譯器的錯誤:
類型'Promise <number>'不可分配給類型'Promise <UserModel>'。 不能將類型“ 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的返回類型。
更新到Typescript 2.3或更高版本
按照@Gerrit的建議,更新到Typescript 2.3將解決此問題。 我已經對其進行了測試,並且可以正常工作。 謝謝@Gerrit
這個問題已經在Typescript github中討論過了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.