【问题标题】:How to create a void JQueryPromise in typescript?如何在打字稿中创建一个 void JQueryPromise?
【发布时间】:2014-10-08 01:56:58
【问题描述】:

我无法理解 JQueryPromise 的类型。 我希望我的承诺是 void 类型,但是当接口定义接受 void 时,我不知道如何返回/转换承诺以匹配接口签名。编译时出现错误:

'() => JQueryPromise' 和 '() => JQueryPromise' 类型的调用签名不兼容。

以下是代码示例:

module Sample {
    export interface Ifoo {
        bar: () => JQueryPromise<void>;
    }

    export class fooClass implements Ifoo {
        bar() {
            var result = $.Deferred();
            // logic
            return result.promise();
        }
    }
}

我做错了什么;或者我可以做对什么?

谢谢!

-约翰

【问题讨论】:

  • 不要在承诺中使用void。每个承诺都应该代表一个结果
  • resolve() 被推迟了做什么?
  • @Bergi undefined 是允许的,相当于void : promisesaplus.com
  • @basarat:当然可以,但不推荐。我说的是“应该”,而不是“必须”:-)
  • 它很有用,例如当您需要以承诺方式超时时。如果要返回值,请不要使用 void。我觉得没有什么特别推荐的:)

标签: jquery interface typescript jquery-deferred


【解决方案1】:

创建延迟时使用&lt;void&gt;

module Sample {
    export interface Ifoo {
        bar: () => JQueryPromise<void>;
    }

    export class fooClass implements Ifoo {
        bar() {
            var result = $.Deferred<void>();
            // logic
            return result.promise();
        }
    }
}

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2019-06-21
    • 2017-07-02
    • 2020-09-28
    • 2018-10-27
    相关资源
    最近更新 更多