我正在使用来自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)完成?
答案 0 :(得分:7)
您还必须在<void>
的调用中加入通用jQuery.Deferred<void>()
。
以下代码应该编译时没有错误:
var dfd: JQueryDeferred<void> = jQuery.Deferred<void>();
dfd.resolve();
我不知道为什么JQueryDeferred<boolean> dfd = $.Deferred()
也不会导致错误。
顺便说一下:即使你坚持使用你的解决方法,你也不必将布尔值传递给dfd.resolve()
,因为resolve
的参数value
是可选的(如下所示) ?
)。