この記事ではTypeScriptのi『index.ts(バレル)』について、
- TypeScriptの
index.ts
(バレル)とは index.ts
(バレル)の使い方
などをサンプルコードをを用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
TypeScriptのindex.ts(バレル)とは
index.ts
(バレル)は、特定のディレクトリから複数のモジュールを1つの場所から再エクスポートする方法です。
index.ts
(バレル)を用いることで、1つのファイルから必要なモジュールをインポートすることができます。これにより、インポート文が減り、コードが整理されます。また、特定のディレクトリが公開しているモジュールをindex.ts
(バレル)で管理できるため、大規模なアプリケーションの構造が整理され、メンテナンスが容易になります。
では、次にindex.ts
(バレル)の使い方をサンプルコードを用いて説明します。
補足
バレルは英語では「Barrel」と書きます。
index.ts(バレル)の使い方
これから説明するサンプルコードでは、demo
ディレクトリ内にある3つのモジュール(foo.ts
、bar.ts
、baz.ts
)がそれぞれ異なるクラス(Foo
, Bar
, Baz
)を実装しており、これのモジュールをindex.ts
(バレル)で再エクスポートしています。また、main.ts
ではindex.ts
(バレル)からこれらのモジュールをインポートしています。
まず、ディレクトリ構成を以下に示します。
Test //プロジェクトのルートディレクトリ
├─main.ts //index.ts(バレル)からモジュールをインポートする
└─demo
├─index.ts // foo.ts, bar.ts, baz.tsをインポートする
├─foo.ts
├─bar.ts
└─baz.ts
demo
ディレクトリ内にある3つのモジュール(foo.ts
、bar.ts
、baz.ts
)の内容を以下に示します。
// foo.ts
export class Foo {
foo: string;
constructor(foo: string) {
this.foo = foo;
}
}
// bar.ts
export class Bar {
bar: string;
constructor(bar: string) {
this.bar = bar;
}
}
// baz.ts
export class Baz {
baz: string;
constructor(baz: string) {
this.baz = baz;
}
}
index.ts
(バレル)では、エクスポートしたいファイルを*
(ワイルドカード)を使用して再エクスポートします。以下のプログラムでは、index.ts
(バレル)と同じディレクトリ内のfoo.ts
、bar.ts
、baz.ts
を再エクスポートしています。これにより、外部のファイルからはindex.ts
(バレル)を用いて、インポートすることができるようになります。
export * from './foo';
export * from './bar';
export * from './baz';
main.ts
では、index.ts
(バレル)からFoo
、Bar
、Baz
クラスをインポートし、それぞれのインスタンスを生成しています。
import { Foo, Bar, Baz } from './demo'; // index.ts(バレル)からインポートしている
const fooInstance = new Foo('test01');
const barInstance = new Bar('test02');
const bazInstance = new Baz('test03');
console.log(fooInstance.foo); // test01
console.log(barInstance.bar); // test02
console.log(bazInstance.baz); // test03
補足
index.ts
(バレル)からインポートする場合、./demo/index
のindex
は省略できます。そのため、以下の2つのコードはどちらでも構いません。
import { Foo, Bar, Baz } from './demo';
import { Foo, Bar, Baz } from './demo/index'; // indexを省略できる
index.ts(バレル)を用いない場合
index.ts
(バレル)を用いない場合には、main.ts
では以下に示すように、各モジュールを個別にインポートする必要があります。index.ts
(バレル)を用いると、各ファイル毎にインポートする必要がなくなるので、便利です。
import { Foo } from './demo/foo';
import { Bar } from './demo/bar';
import { Baz } from './demo/baz';
本記事のまとめ
この記事ではTypeScriptのi『index.ts(バレル)』について、以下の内容を説明しました。
- TypeScriptの
index.ts
(バレル)とは index.ts
(バレル)の使い方
お読み頂きありがとうございました。