在TypeScript定义中为静态方法添加重载

时间:2015-04-03 09:21:26

标签: typescript

我正在为jQuery库编写TypeScript定义文件,该文件具有以下语法:

$.library({ /* options object */ }); // Returns an Object
$.library.methodOne(); // Void
$.library.methodTwo(); // Void

所以我尝试编写以下界面:

interface JQueryStatic {
    library: StaticLibraryMethods; // Defines the static methods
    library(options:LibraryOptions): Object; // Defines the options overflow
}
interface StaticLibraryMethods {
    methodOne(): void;
    methodTwo(): void;
}

但我在JQueryStatic中收到错误:

  

重复的标识符"库"

有没有办法在不修改library本身的情况下为这种语法编写定义?

1 个答案:

答案 0 :(得分:1)

你必须这样定义:

interface JQueryStatic {
    (options: LibraryOptions): Object;
    library: StaticLibraryMethods; // Defines the static methods
}

interface StaticLibraryMethods {
    methodOne(): void;
    methodTwo(): void;
}

或者你可以这样做:

interface JQueryStatic {
    library: MyLibrary;
}

interface MyLibrary {
    (options: LibraryOptions): Object;
    methodOne(): void;
    methodTwo(): void;
}