TypeScriptを使用して、100個の個別のtsファイルを含む大きなライブラリを構築しています。以前はすべてのクラスでexport module XXX(export namespace XXX laterに改名)を使用しましたが、本が言うように、これは推奨される方法ではなく、代わりにimportを使用する必要があります。
そこでインポートを試みました。これはうまくいきました:
import * as mylib from "./source/source.ts";
しかし、100個のファイルがあるので、すべてのファイルにこのような行を追加したくありません。そして、mylib変数を介してすべてのクラスにアクセスできるようにします。
だから私はこれを試しました:
import * as mylib from "./source/";
しかし、これを行うとすぐに、次のようになります。モジュール './source/'が見つかりません
1行で複数のファイルを含むフォルダーからすべてのクラスをインポートする方法はありますか?
Tscが提供する両方のモジュール解決戦略は、このような動作をサポートしていません。希望するインポートステートメント
import * as mylib from "./source/";
実際に行っているのは、次の順序でチェックを実行することです。
1. (does package.json have a typings key? If so, import this file)
2. import * as mylib from "./source/index.ts";
3. import * as mylib from "./source/index.tsx";
4. import * as mylib from "./source/index.d.ts";
ここではノードスタイルのモジュール解決を使用していると想定していますが、これはおそらく推奨される方法であるためです。 TypeScriptでのモジュール解決の詳細については、 TypeScript docs を確認してください。
通常、達成しようとしているのはindex.d.ts
ファイルを作成することです。このファイルは、残りのモジュールをエクスポートするエントリポイントとして機能します。例としてangular2を使用しています:一般的なangular2のインポートは次のようになります:
import { Injectable } from '@angular/core'
core
は、@angular
ディレクトリ内にある単なるディレクトリです。 source
ディレクトリと同じです。ただし、コアディレクトリにはindex.d.ts
ファイルがあります。
/**
* @module
* @description
* Starting point to import all public core APIs.
*/
export * from './src/metadata';
export * from './src/util';
export * from './src/di';
....