2017-10-16 6 views
1

正しいアプローチをしているかどうか教えてください。もし私に正しいアプローチを提案してください。Typescript-Angularでtypecript definationを持たないJavascriptライブラリを拡張する

Typescript(Angular 4)でjavascriptライブラリを使用しています。

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

答えて

0

npm install --save-dev @types/Handsontableとここにあなたのtsconfig.json

さらに情報にそれを提供します。私はこのような角度の写し(typescript)ファイルで、このライブラリを拡張しました

(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); 

:私はjavascript関数のスニペットをしました:https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types

+0

私は@ types/Handsontableを使いたくありません。むしろ "Handsontable:any;を宣言します"プロトタイプを拡張します。これはIIFEのようなものです。直ちにTypescriptを使ってAngular 4で関数式を呼び出します。この点について私を助けてください。 –

+0

アンビエント宣言をダウンロードしたくない場合は、実行しないでください。手作りの環境宣言は完全に無意味で、 'var foo:any'を実行すると値が追加されず、コンパイラの警告が無視されます。唯一の方法は、そのライブラリのアンビエント宣言をダウンロードすることです。これは、TSの最も強力な機能の1つであるため、実行する必要があります。 – Hitmands

+0

問題は、* declare var foo:any *を長時間使用していることです。今すぐプロジェクトが始まりました。しかし、* foo *をカスタマイズするための特別なリクエストがありました。だから、私たちはこのような立場にいません。それはの形で* FOO *をカスタマイズするどのような方法がある私が求めている理由です* * *のtypescriptですにおける拡張の種類* –

関連する問題