我有一个可以在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"));
}
}