我将使用一种稍微不同的方式来打破 jQuery 在组件之外的泄漏(即,如果您从 jQuery 切换,消费者不会关心)。
class Component {
public element: HTMLElement;
constructor(selector: string){
this.element = $(selector).get(0);
}
}
var component = new Component('#myid');
TweenMax.to(component.element, .5, {css:{left:10}});
您可以在不破坏使用组件类的代码的情况下切换this.element = $(selector).get(0);
到。this.element = document.querySelector(selector);
如果HTMLElement
是一个类(而不仅仅是一个接口),您将能够扩展它以避免这component.element
部分,因为您将能够传递专门的类。这是不可能的,因为在 TypeScriptHTMLElement
中是一个接口支持的声明。
如果你只是想扩展你的定义,HTMLElement
你可以在没有类的情况下做到这一点:
interface HTMLElement {
myAdditionalMethod() : string;
}
HTMLElement.prototype.myAdditionalMethod = function () {
return 'Example';
}