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

Mat*_*lez 1 javascript typescript nativescript angular2-nativescript angular

我有一个可以在 Angular 2 中工作的代码,但是当我尝试在 NativeScript 项目中使用它时失败了。\nI\xc2\xb4m 试图拒绝这样的承诺:

\n\n
login(credentials:Credentials):Promise<User> {\n    if (!valid) {\n         return Promise.reject<User>("Invalid password");\n    }else {\n         return Promise.resolve(new User("some user"));\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到此错误:

\n\n
Error:(32, 22) TS2346: Supplied parameters do not match any signature of call target.\n
Run Code Online (Sandbox Code Playgroud)\n

Pan*_*kar 5

当你拒绝它时,你就错过了回报承诺。错误直接表明您没有Promise<User>从函数返回。由于方法返回类型是Promise<User>,它总是返回该对象。

PS:在OP中编辑后发现该方法可以返回两种类型的数据,成功时为Userobject,拒绝时为string. 因此,对于这种情况,我希望您将方法返回类型更改为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"));
    }
}
Run Code Online (Sandbox Code Playgroud)