TypeScript は、タイプセーフなコードの作成に役立つ JavaScript のスーパーセットです。
TypeScript を使用すると、バグを早期に発見して修正できるようになります。 TypeScript の重要な機能の 1 つは Enum です。 Enum は、より安全なコードを作成するのに役立つ TypeScript の一般的な構造です。
この記事では、列挙型、列挙型の作成方法と使用方法、その他考慮すべき多くの事項について説明します。
列挙型とは何ですか?
Enum は列挙型の略です。列挙型データ型は、その型の変数が取ることができるさまざまな値によって定義されます。取得できるさまざまな値は、メンバーまたは要素と呼ばれることがよくあります。
この記事では、彼らをメンバーと呼びます。 Enum は単なる TypeScript の機能ではありません。むしろ、列挙型も存在し、他のプログラミング言語でも使用されます。 enum を使用すると、TypeScript プログラムの型安全性が向上します。
こちらもお読みください: 開発者として知っておくべき主要な TypeScript ライブラリとランタイム
列挙型を使用する理由
列挙型は、変数が保持できる値を指定するのに役立ちます。また、関数の引数がどのような値を取るかを指定するのにも役立ちます。これは、開発者が変数や関数の引数に常に期待値を提供できるようにするのに役立ちます。これはバグを排除し、より安全で堅牢なコードを作成するのに役立ちます。
列挙型を使用するための前提条件
このチュートリアルでは、TypeScript で列挙型を操作する方法を説明します。このチュートリアルを進めるには、TypeScript コードを実行できる必要があります。
したがって、JavaScript コードを実行するには NodeJs をインストールする必要があります。 TypeScript がインストールされていない場合は、以下のビデオでその方法について説明します。
あるいは、スクリプトをすぐにコンパイルして実行したい場合は、
ts-node
を使用します。この記事ではこれについて説明しますが、大規模なプロジェクトの場合は、TypeScript をインストールすることをお勧めします。
ts-node
を使用してスクリプトを実行するには、次のコマンドを使用します。
npx ts-node <scriptname>
また、この記事は、読者が JavaScript と基本的な TypeScript に精通していることを前提としています。
単純な列挙型の操作
単純な列挙型を作成する方法
TypeScript の列挙型は、enum キーワードを使用して作成されます。列挙型の名前が続き、列挙型が保持するメンバーのリストが続きます。以下は、コンパス上の 4 つの基本点の列挙型を宣言する例です。
enum Direction {
North,
East,
South,
West
}
列挙型のメンバーは文字列ではないため、引用符で囲まれていないことに注意してください。
単純な列挙型の使用方法
次のように列挙値を変数に代入します。
const heading: Direction = Direction.North;
宣言時に変数を割り当てているため、TypeScript はデータ型を推測できます。結果として、型をアサートする必要はありません。代わりに、次のように書くことができます。
const heading = Direction.North;
見出し変数の値を確認するには、console.log を実行します。
console.log(heading);
この結果は次のようになります。
0
見出し変数には、
Direction.North
の値を割り当てたにもかかわらず、値 0 が含まれています。これは、列挙型の作成時に各メンバーに数値が割り当てられるためです。最初のメンバーには 0 が割り当てられ、2 番目のメンバーには 1 が割り当てられます。以下にデモンストレーションを示します。
console.log(Direction.North, Direction.East, Direction.South, Direction.West)
したがって、見出し変数に North が含まれているかどうかは、それがゼロに等しいとアサートすることで確認できます。例えば:
// Asserting equality
let isNorth = heading == 0;
// Printing the result
console.log(isNorth);
前に示したように、
Direction.North
は 0 に等しい。したがって、
heading
が 0 に等しいかどうかをチェックする代わりに、
Direction.North
に等しいかどうかをチェックできます。
// Checking if direction is North
isNorth = heading == Direction.North;
// Printing the result
console.log(isNorth);
これらはすべて便利です。おそらくそれが列挙値の使用方法です。ただし、後で説明するように、さらに多くのことを実行できます。次のセクションでは、カスタム値を操作する方法について説明します。
カスタム値の操作
enum を作成すると、TypeScript はメンバーにゼロから始まる数値を自動的に割り当てます。ただし、メンバーにデフォルト値の代わりにカスタム値を持たせたい場合は、その値を割り当てることができます。そのようです:
enum StarRating {
VeryPoor = 1,
Poor = 2,
Average = 3,
Good = 4,
Excellent = 5
}
あるいは、次のこともできます。
enum StarRating {
VeryPoor = 1,
Poor,
Average,
Good,
Excellent
}
この場合、最初のメンバーには値 1 が割り当てられます。後続の選択肢は、前の選択肢から自動的にインクリメントされます。したがって、「悪い」の評価は 2、平均は 3 というようになります。
後で説明するように、列挙型の選択肢には必ずしも数値が含まれるわけではありません。ただし、数値を持つものは通常の数値と同様に動作します。
console.log(typeof StarRating.Average);
これにより、
"number"
が出力されます。これは、次のような比較を含む、数値関連のすべてを実行できることを意味します。
console.log(StarRating.Excellent > StarRating.Average)
これにより、
"true"
が出力されます。
文字列をカスタム値として使用する
前述したように、列挙型の選択肢には数値だけでなく文字列値を含めることができます。その方法は次のとおりです。
enum Choice {
RedPill = "Know Everything"
BluePill = "Know Nothing"
}
この場合、列挙型の選択肢は以前のものと同様に動作します。ただし、値は文字列であるため、前の例のように数値操作ではなく文字列操作を実行できます。
異種の列挙型
文字列と数値を混在させることもできます。これはお勧めできませんし、あまり役に立ちませんが、それでも可能です。
enum Mixed {
First = "String"
Second = 2
}
最後の言葉
この記事では、TypeScript の列挙型とは何か、また列挙型が重要である理由について説明しました。さらに、列挙メンバーが持つことができるさまざまな種類の値についても説明しました。
次に、TypeScript の型とインターフェイスに関する記事をご覧ください。