2017-05-19 2 views
0

私はtypescriptで書かれたライブラリを書いています。私はwebpackを使用して、ライブラリを1つのグローバル変数としてエクスポートする1​​つのミニッツjsファイルにバンドルします。私はチームの開発者にこれらの入力を配布したいと思います。 typescriptユーザーではないので、<script src="...">タグを使用してライブラリ自体をインポートし、トリプルスラッシュ参照ディレクティブ/// <reference path="..." />またはtypingsなどを使用して入力をインポートします。グローバルとしてエクスポートされたjavascriptモジュールの型宣言を作成するには?

質問は次のようになります。

私はコード対使うJSの開発者のための私のライブラリのためのタイピング(すなわち、インテリセンス)を有効にするにはどうすればよいですか?エントリポイントが行う値をエクスポートするグローバル変数が1つ存在すると宣言するにはどうすればよいですか?

declarationDir and declartion compiler optionsは、すべてのタイプコピーソースファイルに対して宣言ファイル(*.d.ts)を作成できるようにしましたが、これらの宣言では、メソッドで使用できるグローバル変数があるとは宣言しません。

バンドルとindex.jsファイルをミニと同じフォルダに手動でindex.d.ts宣言を作成しようとしましたが、動作させることができません。ここで

は、私が試したものです:

import * as myModule from './typings/src/'; 

declare module TheGlobalVariable { 
    // how do I declare that `TheGlobalVariable` has the same methods 
    // as `myModule` exports? 
    export = myModule; // doesn't work 
} 

./typings/src/index.d.tsは、このライブラリのエントリポイントについて生成された宣言ファイルであるとTheGlobalVariableは輸出WebPACKのグローバル変数の名前です。

アイデア?

答えて

0

私はそれを理解しました。

私のバンドルされたjsライブラリファイルが(index.js)であるのと同じフォルダに、index.d.tsというファイルを追加しました。

export * from './src'; 
export as namespace OntologyStore; 

キーイネーブラがexport as ...次のとおりです。ここではそのファイルがあります。

module templateおよびthis documentation on library structuresを参照してください。

また、webpack libraryTarget'umd'に変更してください。 UMDモジュールはモジュールローダがあるかどうかをチェックし、モジュールローダがない場合はグローバルにエクスポートします。また、私はdeclarationまたはdeclarationDirコンパイラオプションを使用する必要はありませんでした。

関連する問題