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

标签 jquery typescript jquery-deferred

我正在使用来自 DefinitelyTyped 存储库(使用 tsd)的 jquery.d.ts。它似乎是“官方”jquery 类型,因为许可证 header 表示它是由 Microsoft 创建的。

现在,我偶尔需要创建一个不需要向其传递任何参数的延迟对象 .resolve().reject()方法,我不知道如何使用静态类型来做到这一点。

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

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

最佳答案

您必须包含通用 <void>在调用 jQuery.Deferred<void>()

下面的代码应该没有错误地编译:

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

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

顺便说一句:即使您继续使用解决方法,也不必将 bool 值传递给 dfd.resolve()resolve的参数 value是可选的(如 ? 所示)。

关于jquery - 如何使用 TypeScript 和 jquery.d.ts 创建通用(无效)JQueryDeferred 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23892382/

相关文章:

node.js - 使用导入而不是 require() 时带有 uuid 的 MongooseError

typescript - Guards 和循环依赖中的服务注入(inject)

typescript - 为什么 document.body 不是 HTMLBodyElement?

jquery - 将函数的执行推迟到其他事件发生之后

javascript - 在 jquery $.when(ajax).done(function(){do sth} 中,我如何回调同一个回调函数两次?

javascript - 循环内的嵌套 ajax 调用未按顺序执行

javascript - 为什么变量在JS中会被识别为数字?

javascript - 使用 Jquery 克隆现有的 div

javascript - jQuery 性能 - 按数据属性或类选择?

javascript - 使用 JSONP 时如何捕获 jQuery $.getJSON(或数据类型设置为 'jsonp' 的 $.ajax)错误?