我想添加一些次要方法,但我不想将它们添加到JQuery-Interface。
我想到了一个全局函数X(...)(称为$(...)),它将使用给定参数创建一个JQuery对象,将其向下转换为我的子类,添加附加方法并返回此对象
答案 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的子类来扩展其行为。
通常情况下,您不以这种方式声明第三方库的原因是您要么知道它不能被扩展,要么您不能保证它将保持不变。