簡體   English   中英

打字稿嵌套承諾返回類型不匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM