generated at
ES2022
ES2021 ← ES2022 → ES2023

Class Fields
privateメソッド・privateフィールドを作れるよ!
private.js
class Foo{ #privatemethod() { return "privatemethod"; } publicmethod() { return "publicmethod"; } }
先頭に # をつければprivateになる
メソッド名自体変わってしまうからリファクタリングがとてもつらいよ!
IDEの機能でほぼ自動でできるよbsahd
(privateの関数なのでクラス外で使われていない前提)
できたとしてもどこか変更されていない箇所が出てきそうで怖いな(経験談的に)Mijinko_SD
変更前の名前のエイリアス作って、エイリアス経由で踏んだらログが出るようにするbsahd
何故TypeScriptのようにアクセス修飾子にしなかったのか
RegExp Match Indices
モジュールの一番浅いところでawaitできるようになった
つまりどこでもawaitできるように
これにより、モジュール初期化終了までにpromiseの結果を取得できるようになった
ただこれを使うと、ES2022より前のバージョンにトランスパイルできなくなるので注意(2024/12/08現在)
esbuildはこの仕様だったはずだけど、Babelはどうなんだろう
配列の要素を負の数で指定できるようになった
Pythonの配列内要素指定と同じ仕様と考えるとわかりやすい
入れ子try ... catchでエラーが発生した場合に、子のcatchで受け取ったエラー内容も参照できるようになった
errorCause.js
try{ try{ try{ throw new Error('Error1'); }catch(e){ throw new Error('Error2', {cause: e}); } }catch(e){ throw new Error('Error3', {cause: e}); } }catch(e){ console.table(e); // Error3 console.table(e.cause); // Error2 console.table(e.cause.cause); // Error1 }