我对TypeScript
很新,不确定这是否可行。
我的应用程序使用jQuery
。要创建新的JQuery
我可以使用:
var $someElement = $("#someString");
我有一个定义的对象,看起来像这样:
class HtmlElementId {
private idPrefix: string = "#";
id: string;
constructor(id: string) {
this.id = id;
if (id.indexOf(this.idPrefix) !== 0) {
this.id = this.idPrefix + id;
}
}
}
我想以某种方式重载JQuery构造函数来制作类似这样的东西
$(idElement : HtmlElementId){
return $(idElement.id);
}
所以我可以在像
这样的代码中使用它var myIdElement = new HtmlIdElement("someString");
var $someElement = $(myIdElement); // <- this is what I want
问题:这可能吗?如果是这样,怎么能实现呢?
答案 0 :(得分:0)
不是100%肯定,但我认为这样的事情可能会起作用
var $ = (id: string) => {
return new HtmlIdElement(id);
}
$("test")
虽然我确实感觉现在使用jQuery时你可能需要我们jQuery(“”)而不是$(“”),因为你用你自己的定义替换$
答案 1 :(得分:0)
您需要使用Declaration Merging扩展JQueryStatic
界面。
在您的情况下,代码很简单:
interface JQueryStatic {
(idElement: HtmlElementId): JQuery;
}
您可以将此添加到以这种方式使用jQuery的每个.ts
文件或其owd d.ts
文件中。
在后一种情况下,您可以用您自己的文件替换对jquery.d.ts
的所有引用,编译器将传递搜索d.ts
文件。