js-primer
js-primer copied to clipboard
ECMAScript 2024の対応
ES2024対応のメタIssueです
やりかた
- [ ] JavaScript Primer - Open Collectiveでのアナウンス
- [x] 検討リストから対応するべきかを決める
- [x] 対応するものは別途Issue化する
- [ ] 対応する
- [ ] すべて対応したら
book.js
を更新 - [ ] リリースノートを公開する
スケジュール
- 1月: TC39で最終的にFeature Freezeされる
- 1-6月: 検討、実装
- 6月: ES2023の正式リリースと合わせて公開
- 大体6月後半に News - Ecma International でリリースされる
検討リスト
検討対象のリスト
- [x] tc39/proposal-is-usv-string: a proposal for a method to determine if a String is welll-formed Unicode
- [x] tc39/proposal-atomics-wait-async: "asynchronous atomic wait" for ECMAScript
- [x] tc39/proposal-regexp-v-flag: UTS18 set notation in regular expressions
- [x] tc39/proposal-resizablearraybuffer: Proposal for resizable array buffers
- [x] tc39/proposal-array-grouping: A proposal to make grouping of array items easier
- [x] tc39/proposal-promise-with-resolvers
対応リスト
実際に対応するリスト
- [ ] #1716
- [ ] #1716
過去
- #1658
- #1337
- #1220
- #1145
合わせて考えたいこと
- #1674
- #1694
- #1698
First Impression
サロゲートペアで判定方法として触れる可能性がある。
Atomicsは触れてないので特に触れない
文字列とUnicode · JavaScript Primer #jsprimerで触れる可能性はあるがちょっとAdvancedな感じがする
- tc39/proposal-resizablearraybuffer: Proposal for resizable array buffers
- tc39/proposal-arraybuffer-transfer: Proposal to add ArrayBuffer.prototype.transfer
ArrayBufferの詳細は触れてないので触れない。
配列 · JavaScript Primer #jsprimer で検討する
非同期処理:Promise/Async Function · JavaScript Primer #jsprimerでDefferredについては触れてないので触れないかもしれない。
Well-Formed Unicode Strings
孤立したサロゲートペアを発見するメソッド。
encodeURIComponent("\uD800")
のような孤立したサロゲートペアを受け取ると例外を投げる文字列の判定に利用できる。
サロゲートペア では、特に孤立したサロゲートペアについては触れていない。 そのため、追加するかはちょっと微妙。コラム的に書くのはありかもしれないぐらいな印象
結論
Issueは作るが、必要なら対応するぐらいな優先度
tc39/proposal-atomics-wait-async: "asynchronous atomic wait" for ECMAScript
Atomics.waitAsync
Atomics
自体が登場していないため、特に触れない
結論
対応しない
tc39/proposal-regexp-v-flag: UTS18 set notation in regular expressions
特にフラグを網羅してるわけではないので、触れなくても問題なさそう。 フラグの一覧だけを出すというのはありかもしれないが、現状はそのパターンがないので触れない
結論
対応しない
ArrayBuffer
- tc39/proposal-resizablearraybuffer: Proposal for resizable array buffers
- tc39/proposal-arraybuffer-transfer: Proposal to add ArrayBuffer.prototype.transfer
ArrayBuffer自体を扱っていないので対応しない
結論
対応しない
tc39/proposal-array-grouping: A proposal to make grouping of array items easier
Web互換性のためにObject.groupBy
になった。
Map.groupBy(array, fn)
もある。
グループ化は頻出ではあるので含めるのは妥当そうだけど、配置が難しい
-
Array.prototype.group
→Object.groupBy(array, cb)
-
Array.prototype.groupToMap
→Map.groupBy(array, cb)
という経緯。 どちらも配列を引数として受け取るようになってるので、配列関係。
データの変換的に見れば
-
Object.groupBy
は 配列をオブジェクトにするメソッド -
Map.groupBy
は配列をMapにするメソッド
として捉えられる。
Object.groupBy
は、 配列 to objectなので、Array.prototype.reduce の近くにあるのが良さそう。
Map.groupBy
は、Map/Setにあるのが良さそう。
Map.groupBy
はちょっと必要かは怪しい。
結論
-
Object.groupBy
: 配列の章に追加する -
Map.groupBy
は Map/Setの章に追加する?
tc39/proposal-promise-with-resolvers
Promise.withResolvers によるイベントの Promise 化 | blog.jxck.io Defferredパターンが必要なのは、イベントの付与とPromiseを組み合わせる時。 書籍では特に出てこない。
Ajax通信 · JavaScript Primer #jsprimerはclickが最初に決まっているので、クリックしたタイミングで付与するわけじゃない。XHRならありえたけど。
少し発展的なパターンなので、この本だと不要そう。
結論
対応しない。
- https://github.com/azu/promises-book/issues/366
https://github.com/tc39/ecma262/releases/tag/es2024-candidate-2024-02 ES2024 RCがリリースされた