我有一个可以在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.

最佳答案

当您拒绝承诺时,您错过了返回承诺的机会。
错误直接表明您没有从函数返回Promise<User>。由于方法返回类型为Promise<User>,因此它始终返回该对象。

PS:在OP中进行编辑后,发现该方法可以返回两种类型的数据,成功后将是User对象,而拒绝它的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"));
    }
}

10-05 20:52
查看更多