TypeScript Enum インポート 解説
TypeScript では、Enum を別のファイルからインポートして使用することができます。これにより、コードのモジュール化と再利用性が向上します。
手順
-
Enum の定義
まず、インポートしたい Enum を定義します。例えば、colors.ts
ファイルに以下のように定義します。// colors.ts export enum Color { Red, Green, Blue }
-
Enum のインポート
別のファイルでこの Enum をインポートするには、import
ステートメントを使用します。// main.ts import { Color } from './colors'; function printColor(color: Color) { console.log(color); } printColor(Color.Red); // Output: 0
ポイント
-
デフォルトエクスポート
もし Enum をデフォルトエクスポートしている場合は、インポート時に名前を省略できます。// colors.ts export default enum Color { Red, Green, Blue } // main.ts import Color from './colors';
利点
- コードの読みやすさ
Enum をインポートすることで、コードの意図を明確にし、読みやすくなります。 - 名前空間の衝突防止
異なるファイルで同じ名前の Enum を定義しても、インポートすることで名前空間の衝突を防げます。 - コードのモジュール化
Enum を別のファイルに分割することで、コードを整理し、再利用しやすくなります。
// colors.ts
export enum Color {
Red,
Green,
Blue
}
Enum のインポート
// main.ts
import { Color } from './colors';
function printColor(color: Color) {
console.log(color);
}
printColor(Color.Red); // 出力: 0
解説
-
colors.ts
ファイルでColor
という名前の Enum を定義しています。Red
,Green
,Blue
の 3 つのメンバーを定義しています。デフォルトでは、数値が自動的に割り当てられます (0, 1, 2)。
-
main.ts
ファイルでcolors.ts
からColor
Enum をインポートしています。printColor
関数でColor
型のパラメータを受け取っています。Color.Red
を関数に渡すと、0
が出力されます。
-
フラグ Enum
export enum Flag { None = 0, Read = 1, Write = 2, ReadWrite = Read | Write }
- ビットフラグを使用して複数のフラグを組み合わせることができます。
-
文字列 Enum
export enum Color { Red = 'RED', Green = 'GREEN', Blue = 'BLUE' }
- メンバーに文字列を割り当てることで、文字列 Enum を定義できます。
-
デフォルトエクスポート
// colors.ts export default enum Color { Red, Green, Blue } // main.ts import Color from './colors';
- Enum をデフォルトエクスポートすると、インポート時に名前を省略できます。
特定の Enum を別の名前でインポートしたい場合、インポートエイリアスを使用できます。
// main.ts
import { Color as MyColor } from './colors';
function printColor(color: MyColor) {
console.log(color);
}
printColor(MyColor.Red);
名前空間のインポート
複数の Enum を同じファイルからインポートする場合、名前空間のインポートを使用できます。
// colors.ts
export namespace Colors {
export enum Color {
Red,
Green,
Blue
}
export enum Shape {
Circle,
Square,
Triangle
}
}
// main.ts
import * as Colors from './colors';
function printColor(color: Colors.Color) {
console.log(color);
}
printColor(Colors.Color.Red);
// colors.ts
export default enum Color {
Red,
Green,
Blue
}
// main.ts
import Color from './colors';
function printColor(color: Color) {
console.log(color);
}
printColor(Color.Red);
注意
- インポートした Enum は、通常の Enum と同様に使用できます。
- Enum をインポートすると、その型定義が利用できるようになります。
typescript