是否可以通过创建它的子类来使用Typescript扩展JQuery?

时间:2013-05-30 21:11:26

标签: jquery typescript

我想添加一些次要方法,但我不想将它们添加到JQuery-Interface。

我想到了一个全局函数X(...)(称为$(...)),它将使用给定参数创建一个JQuery对象,将其向下转换为我的子类,添加附加方法并返回此对象

1 个答案:

答案 0 :(得分:4)

快速回答是你无法在TypeScript中扩展jQuery,因为它没有表示为类。答案越长越好。

由于jQuery未作为类实现(或声明),因此无法创建在TypeScript中扩展它的子类。

例如,TypeScript中针对第三方库的许多声明遵循如下的interface-var样式:

interface CoolLibrary {
    coolStuff(size: number): string;
}

declare var cool: CoolLibrary;

这意味着您可以获得库的类型信息和自动完成功能,但无法扩展它。

如果您知道可以扩展库,则可以将其声明为:

declare class CoolLibrary {
    coolStuff(size: number): string;
}

declare var cool: CoolLibrary;

然后,您可以创建CoolLibrary的子类来扩展其行为。

通常情况下,您不以这种方式声明第三方库的原因是您要么知道它不能被扩展,要么您不能保证它将保持不变。

相关问题