2017-10-16 111 views
1

請讓我知道我是否遵循正確的方法。如果不是,請建議我正確的做法。在Typescript-Angular中擴展沒有打字稿定義的Javascript庫

我在Typescript(Angular 4)中使用了一些JavaScript庫。我有javascript函數的代碼片段:

(function(Handsontable){ 
    var CustomEditor = Handsontable.editors.BaseEditor.prototype.extend(); 

    // ...rest of the editor code 

    // Put editor in dedicated namespace 
    Handsontable.editors.CustomEditor = CustomEditor; 

    // Register alias 
    Handsontable.editors.registerEditor('theBestEditor', CustomEditor); 

})(Handsontable); 

我已經延長在這樣棱角分明打字稿文件這個庫:

declare var Handsontable : any; 
constructor (
const autocompleteEditor2 = Handsontable.editors.AutocompleteEditor.prototype.extend(); 
Handsontable.editors.autocompleteEditor2 = autocompleteEditor2; 
Handsontable.editors.registerEditor('autocompleteEditor2', autocompleteEditor2); 
) 

回答

0
+0

我不想使用@ types/Handsontable,而是我將「聲明var Handsontable:any;」我會擴展它的原型。這是一種IIFE - 立即在使用Typescript的Angular 4中調用函數表達式。請在這方面幫助我。 –

+0

如果您不想爲此下載環境聲明,那就不要這樣做。手工製作的環境聲明完全沒有意義,而且'var foo:any'不會添加任何值,它只是忽略編譯器警告。唯一的辦法是下載該庫的環境聲明,你應該這樣做,因爲這是TS最強大的功能之一。 – Hitmands

+0

我們有的問題是我們正在使用* declare var foo:any *長時間。現在項目正在進行中。但是我們有具體的要求來定製* foo *。所以我們不能這麼做。這就是我要求的原因是否有任何方法可以自定義* foo * * javascript原型* * typescript * –