如何使用TypeScript和jquery.d.ts创建通用(void)JQueryDeferred对象

时间:2014-05-27 14:41:14

标签: jquery typescript jquery-deferred

我正在使用来自DefinitelyTyped repo的jquery.d.ts(使用tsd)。它似乎是“官方”jquery键入,因为许可证标题表示它是由Microsoft创建的。

现在,我偶尔需要创建一个不需要将任何参数传递给.resolve().reject()方法的延迟对象,我无法弄清楚如何使用静态类型。

我目前正在使用一种解决方法:我正在通过JQueryDeferred<boolean> dfd = $.Deferred()创建延迟并通过dfd.resolve(false)解决它,尽管我不需要传递布尔值。从jquery.d.ts文件中我只能找到JQueryDeferred<T>声明,但不能找到通用声明(如JQueryDeferred<void>那样但这不是有效的TypeScript语法)。

如何以“正确的方式”(TM)完成?

1 个答案:

答案 0 :(得分:7)

您还必须在<void>的调用中加入通用jQuery.Deferred<void>()

以下代码应该编译时没有错误:

var dfd: JQueryDeferred<void> = jQuery.Deferred<void>();
dfd.resolve();

我不知道为什么JQueryDeferred<boolean> dfd = $.Deferred()也不会导致错误。

顺便说一下:即使你坚持使用你的解决方法,你也不必将布尔值传递给dfd.resolve(),因为resolve的参数value是可选的(如下所示) ?)。