1

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

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

4

1 回答 1

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 的子类来扩展其行为。

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

于 2013-05-31T09:16:27.267 回答