https://github.com/tc39/proposals
変更があったのはステージ 1 や ステージ 2 ばかりで ステージ 3 やステージ 4 への追加はないようです
ステージ 2 に上がったものでは Iterator.range があります
こういう感じで使えるものみたいです
for (const i of Iterator.range(0n, 43n)) console.log(i)
今でも
for (const i of Array(10).keys()) console.log(i)
とすれば 0 ~ 9 を i としてループできるので 別になくてもいいかなというものです
ただ開始番号やステップを指定したり減らしていくことはできないので そういうことをしたいときには少しは便利になるのかも
また一旦配列を作らないので終わりがない範囲を扱えるメリットがあります
今の方法でも配列の実体は作らず .keys() でイテレータを作るので 10 億とかあっても最初の数件を取得なら一瞬で終わります
しかし 配列の要素数には上限があるので 4294967295 が最大値となってしまいます
他には Float16Array がステージ 2 みたいです
言われてみれば 16 はなかったですが 32 と 64 だけあれば十分で欲しいと思ったこともないので個人的には上のイテレータ以上にどっちでもいいものです
良さそうなのはまだステージ 1 に追加された段階ですが Promise.withResolvers です
Promise ってコンストラクタに渡す関数が resolve/reject を受け取り その関数の中で成功失敗を判断しどちらかを呼び出すのが前提な作りです
でもそうじゃない使い方をすることも少なくないです
そういうときは
let resolve
let reject
const promise = new Promise((a, b) => {
resolve = a
reject = b
})
みたいな一手間が必要です
割とよくやるものですし ライブラリを見ててもこういうことをしてるのは結構あります
これを
const { promise, resolve, reject } = Promise.withResolvers()
のように書けるようにするという提案です
あると助かりますし 早いうちにステージ 4 まで来てほしいですね
前回 ステージ 3 からステージ 2 に格下げされた Import Assertions ですが Import Attributes に名前が変わりました
構文も変わって assert から with になりました
import json from "./foo.json" with { type: "json" }
当面は assert の構文も残るようですが その他消された機能のようにしばらくして with が普及した頃には消されそうです
古い機能は何があろうと残そうとするのに 最近は簡単に消していくのはやめてほしいものです
長いので読んでませんが 議論詳細はここで見れます
https://github.com/tc39/notes/tree/main/meetings/2023-03