如何拒绝 NativeScript 上的承诺 - Angular 2

How to reject a promise on NativeScript - Angular 2

我有一个代码可以在 angular 2 中运行,但是当我尝试在 nativescript 项目中使用它时失败了。 我试图拒绝这样的承诺:

login(credentials:Credentials):Promise<User> {
    if (!valid) {
         return Promise.reject<User>("Invalid password");
    }else {
         return Promise.resolve(new User("some user"));
    }
}

我得到这个错误:

Error:(32, 22) TS2346: Supplied parameters do not match any signature of call target.

您在拒绝时错过了 return 承诺。 错误直接说你不是 returning Promise<User> 从功能。由于方法 return 类型是 Promise<User>,它总是 return 该对象。

PS: 在OP中编辑后发现该方法可以return两种类型的数据,成功则为User对象, 拒绝其 string。因此,对于这种情况,我希望您将方法 return 类型更改为 User | string

代码

login(credentials:Credentials):Promise<User | string> {
    if (!valid) {
         //returned promise here which was missing and failing compilation
         return Promise.reject("Invalid password");
    }else {
         return Promise.resolve(new User("some user"));
    }
}