Proposal for ECMAScript enumsについて(2025-06-06時点)
https://gyazo.com/defda56b8612cb9f7b78a0ac630e7fc5
https://gyazo.com/a6d28b60f6d8d7af63407708ad65cebf
メニューのドキュメントアイコンより「プレゼンテーションを開始」クリックでプレゼンテーションが始まります
自己紹介
https://gyazo.com/bfca3514cbff1f84edfb8b49e59bb062 https://yamanoku.net/tskaigi-2025/
会場では皆様に笑っていただけたのでやれてよかったです
「Enumは時代遅れ」
各所でも散々言われてる悲しいやつ
たしかにEnumを使うことはあまりないが、そんなに言われることだろうか…yamanoku.icon Enumがどういうものなのかを改めて見直す旅にでました 最初はどうしようもない悲しいストーリーで終わるつもりだった
Enumの良いところを探そうとしつつもなかなか説得力のある材料が見当たらず。。。 更新が入ってStage 1に移行した!
https://gyazo.com/b51898b26f8e7379d424632ec09b03b2
一部は違う挙動になっている
自動初期化
code:initialize.js
enum Numbers {
zero, // 0
one, // 1
two // 2
}
TypeScript.icon やる
TC39.icon やらない(削除)
安全な代替構文を検討したい
宣言マージ(declaration merging)
TypeScript.icon できる
TC39.icon できない(やらない)
偶発的な拡張を防止する目的
逆マッピング
TypeScript.icon Enum[value]形式で抽出
TC39.icon Symbol.iteratorを使用
すべての値の型に対して[key, value]ペアをイテレート
const enumでの概念
TypeScript.icon コンパイル時に削除する
TypeScript.icon サポートしていない
TC39.icon サポートする
export defaultのサポート
TypeScript.icon サポートしていない
TC39.icon サポートする
判別プロパティを持つオブジェクトを生成するコンストラクタ関数のような機能
code:sample.js
enum Option {
Some(value), // 値がある状態
None() // 値がない状態
}
const opt = Option.Some(123); // Some(123)という値を作成
// パターンマッチを使って、値の状態に応じて処理を分岐
match (opt) {
Option.Some(let value): console.log(value); // 'Some'の場合、値を取り出して表示
Option.None(): console.log("<no value>"); // 'None'の場合の処理
}
code:sample.js
enum Result {
Ok(value), // 成功した場合の値
Error(reason) // エラーの場合の理由
}
function try_(cb) {
try {
return Result.Ok(cb());
} catch (e) {
return Result.Error(e);
}
}
// 何らかの処理を実行し、結果をResult型で取得
const res = try_(() => obj.doWork());
match (res) {
Result.Ok(let value): /* 成功時の処理 */ ;
Result.Error(let reason): /* エラー時の処理 */ ;
}
code:enum_n_decorator.js
@WasmType("u1")
enum Role {
user = 1,
admin = 2,
}
@rbuckton: After 18 years at Microsoft, with roughly a decade of that time working on TypeScript, I have unfortunately been let go in the latest round of layoffs. I need to take a few days to process before I start looking for work. Thanks to everyone who's been part of my journey so far. EnumがTSから追放された
↓
EcmaScriptで採用されるかも?
↓
推進してた人がMicroSoftから追放された
これをこんなに面白おかしく話せるの天才
この発想まで至らなかったyamanoku.icon
yamanoku.iconはEnumの夢を見たいと思います Thank you for listening !
https://gyazo.com/4c1d0df4903765cc351797c10f903ba1