【问题标题】:How to reject a promise on NativeScript - Angular 2如何拒绝对 NativeScript 的承诺 - Angular 2
【发布时间】:2016-10-12 13:45:40
【问题描述】:

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

【问题讨论】:

    标签: javascript angular typescript nativescript angular2-nativescript


    【解决方案1】:

    当你拒绝它时,你错过了返回承诺。 错误直接表示您没有从函数返回Promise&lt;User&gt;。由于方法返回类型是Promise&lt;User&gt;,它总是返回那个对象。

    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"));
        }
    }
    

    【讨论】:

    • 感谢您的回答,这不是问题!我忘了把它放在问题上,但我把它放在代码上!我将编辑问题。
    • 谢谢!但是Promise.reject&lt;User&gt;("Invalid password"); 没有返回 Promise ??
    • @DiegoGonzález 不,Promise.reject&lt;User&gt;("Something") 的语法不正确,因为在调用拒绝函数时不能在两者之间说 &lt;User&gt;。此外,括号内的任何内容 reject("Something") 都会返回。在拒绝函数的情况下,它的 string 哪里,哪里从 resolve 函数正确返回 User 对象
    • 在打字稿中?我在其他项目中使用该语法没有问题。我认为这是打字稿编译器选项的问题。
    • @DiegoGonzález 不,不是。因为在这里您试图将其应用于 reject 方法,这显然是无效的
    猜你喜欢
    • 2015-08-26
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2017-09-04
    • 2018-08-15
    • 1970-01-01
    相关资源
    最近更新 更多