2013-12-16 68 views
1

我正在將現有代碼庫轉換爲使用TypeScript。如何爲引導模式構造函數添加TypeScript接口

我們的代碼包括這個技巧(它是一個引導錯誤解決方法):

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

打字稿不喜歡這一點,並給出了此錯誤:

The property 'Constructor' does not exist on value of type '{ (options?: ModalOptions): JQuery; (options?: ModalOptionsBackdropString): JQuery; (command: string): JQuery; }'.

這些都是相關的類型定義(從bootstrap.TypeScript.DefinitelyTyped):

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

...但我無法工作如何添加或修改此接口定義以防止出現錯誤。

+0

我用這個文件,它工作得很好 https://www.nuget.org/packages/bootstrap.TypeScript.DefinitelyTyped/ – Ali

回答

2

不幸的是,你不能定義一個具有相同名稱的成員var +函數。也就是說,以下是編譯器錯誤:

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

同時你可以這樣做:

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

如果打字稿有型的工會,它不(你可以投票給這些人,https://typescript.codeplex.com/workitem/1364)你可能這樣做:

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