如何为引导模式构造函数添加TypeScript接口

时间:2013-12-16 00:28:05

标签: typescript definitelytyped

我正致力于将现有代码库转换为使用TypeScript。

我们的代码包含了这个h​​ack(这是一个bootstrap bug的解决方法):

jQuery().modal.Constructor.prototype.enforceFocus = function () {};

Typescript不喜欢这个,并给出了这个错误:

  

属性'Constructor'在类型'{的值上不存在   (选项?:ModalOptions):JQuery; (选项?:   ModalOptionsBackdropString):JQuery; (命令:字符串):JQuery; }”。

这些是相关的类型定义(来自bootstrap.TypeScript.DefinitelyTyped):

interface JQuery {
    modal(options?: ModalOptions): JQuery;
    modal(options?: ModalOptionsBackdropString): JQuery;
    modal(command: string): JQuery;
}

...但我无法弄清楚如何添加或修改此接口定义以防止错误。

1 个答案:

答案 0 :(得分:2)

不幸的是,您无法定义具有相同名称的成员var +函数。即以下是编译器错误:

interface foo {
    a();
    a:number;
} 

同时你可以这样做:

(<any>jQuery()).modal.Constructor.prototype.enforceFocus = function () {};

如果TypeScript有类型的联合,它没有(您可以在这里投票https://typescript.codeplex.com/workitem/1364),你可能会这样做:

interface foo {
    a:()=>void | number;
}