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