我有一个适用于 Angular 2 的代码,但是当我尝试在 nativescript 项目中使用它时失败了。 我试图拒绝这样的 promise :
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 。
错误直接说你不返回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"));
}
}
关于javascript - 如何拒绝 NativeScript 上的 promise - Angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40000296/