是否可以使用TypeScript对jQuery.fn.extend进行建模
我的猜测是,答案是“不”,但我想检查一下我没有错过的东西。
jQuery有一个fn.extend方法,它允许你用额外的方法来扩充jQuery对象。 以下是API文档的一个示例:
jQuery.fn.extend({
check: function() {
return this.each(function() {
this.checked = true;
});
},
uncheck: function() {
return this.each(function() {
this.checked = false;
});
}
});
// Use the newly created .check() method
$( "input[type='checkbox']" ).check();
我一直在填写jQuery JSDoc并测试DefinitelyTyped项目。 以前,jQuery.fn被定义为any
。 为了使它符合我一直在寻找的文档,将其改为覆盖extend
方法:
fn: {
/**
* Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods.
*
* @param object An object to merge onto the jQuery prototype.
*/
extend(object: any): any;
}
但是,我不认为在TypeScript中有一种方法来模拟动态方法而不是静态方法。 这意味着在您的TS中不可能随后使用这些动态增强的方法,除非您:
any
或 $("input[type='checkbox']")["check"]();
所以我的问题:我有没有错过? 有没有更好的方法来建模jQuery.fn
所以TypeScript可以拿起jQueryStatic
获取这些动态方法? 正如我所说,我认为答案是“不”,但我想确定。
这是一个明确的否定。
在定义内的编译器中执行代码会很好,但不存在这样的语法。 这是我所希望的:
interface Foo{
bar(member:any):any @ execute { // execute this code inside the compiler language service:
var keys = compiler.getArgs().keys();
compiler.getIdentifier('JQueryStatic').addMembers /// you get the point.
}
}
但它有可能使编辑变得缓慢,并且会充满边缘案例,更不用说它提供的更多工作了,而这些工作并不在我预计的范围之内。
链接地址: http://www.djcxy.com/p/18553.html上一篇: Is it possible to model jQuery.fn.extend using TypeScript