我正在使用来自 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/