我正致力于将现有代码库转换为使用TypeScript。
我们的代码包含了这个hack(这是一个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;
}
...但我无法弄清楚如何添加或修改此接口定义以防止错误。
答案 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;
}