enum、const enum、union literalの代替案
従来のenum、const enum、union literalによる代替案を比較し、開発体験、サイズ、安全性のトレードオフを学びます
「enum、const enum、union literalの代替案」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全3レッスンが含まれています。
導入
目標:enum、const enum、またはunion-literal型をいつ使うかを学びます。実行時の出力、DX、ツリーシェイキングを比較します。
数値enum
数値enumは実行時オブジェクトを生成し、逆マッピングを利用できます。単純である一方、バンドルサイズが多少増加します。
enum Direction {
Left = 0,
Right = 1
}
const d: Direction = Direction.Left;
console.log(d); // 0文字列enum
文字列enumはログやAPIで読みやすくなります。また、実行時オブジェクトも生成します。
enum Status {
Ok = "ok",
Error = "error"
}
const s: Status = Status.Ok;
console.log(s); // "ok"const enum
const enumはコンパイル時に値をインライン化するため、実行時コストがゼロになります。ただし、ビルドツールを一貫して設定する必要があります。
const enum Axis {
X = 0,
Y = 1
}
const a: Axis = Axis.X;
console.log(a); // 0 (inlined)union-literalによる代替
union-literalは実行時の出力がなく、switchでの絞り込みに適しており、ツリーシェイキングの効果も高くなります。多くの場合、最初に検討する選択肢として適しています。
type Dir = "left" | "right";
function move(d: Dir) {
switch (d) {
case "left":
console.log("←");
break;
case "right":
console.log("→");
break;
}
}
move("left");選び方
ガイドライン:
- ほとんどの選択肢の集合には、union-literalを優先します(実行時コストがありません)。
- 実行時オブジェクトや逆マッピングが必要な場合は、enumを使用します。
- ビルド環境が対応している場合は、値をインライン化する定数にconst enumを使用します。
union-literalとenumの確認
確認問題:enumの代替となるunion-literal型について、正しい説明はどれですか?
まとめ
まとめ:enumは実行時オブジェクトを生成し、const enumは値をインライン化してコストをゼロにし、union-literalは実行時の出力なしで安全性を提供します。ビルド環境とAPIの要件に応じて選択してください。
よくある質問
「enum、const enum、union literalの代替案」レッスンは無料ですか?
はい。「enum、const enum、union literalの代替案」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全3レッスンが含まれています。
「enum、const enum、union literalの代替案」で何を学びますか?
従来のenum、const enum、union literalによる代替案を比較し、開発体験、サイズ、安全性のトレードオフを学びます ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「enum、const enum、union literalの代替案」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 配列とReadonlyArray
- タプルとラベル付きタプル
- enum、const enum、union literalの代替案