1

我正在将现有代码库转换为使用 TypeScript。

我们的代码包含这个 hack(它是引导程序错误的解决方法):

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

打字稿不喜欢这样,并给出了这个错误:

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

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

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

...但我不知道如何添加或修改此接口定义以防止错误。

4

1 回答 1

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;
} 
于 2013-12-16T00:55:07.477 回答