Commit 6c1a17c
authored
feat!: ES2025に対応 (#1838)
## 概要
JavaScript Primer(jsprimer)をECMAScript 2025に対応させるPRです。
本書のECMAScriptバージョンを2024から2025へ更新し、ES2025で追加された新機能の解説を追加しました。
- fix #1778
## 変更内容
### バージョン更新
- ECMAScriptバージョン: 2024 → 2025
- Node.jsバージョン: 22.7.0 → 22.18.0
- `.node-version`: v22.17.1 → v22.18.0
- `book.json`: 22.7.0 → 22.18.0
- `README.md`: ドキュメント内のバージョン表記を更新
### ES2025新機能の追加(実装済み)
以下のES2025の新機能について、すでに実装・マージ済みです:
1. **RegExp.escape** [ES2025] (#1784)
- PR: #1837 (マージ済み)
- 正規表現パターンで使う特殊文字をエスケープするメソッド
2. **Import Attributes** [ES2025] (#1783)
- JavaScript以外のファイル(JSON等)をモジュールとして読み込む構文
3. **Set Methods** [ES2025] (#1784)
- PR: #1804 (マージ済み)
- Setの集合演算メソッドの追加(intersection, union, difference等)
4. **Iterator Helpers & イテレータとジェネレータの章** [ES2025] (#1782)
- PR: #1825 (マージ済み)
- イテレータとジェネレータの章を新規追加
### その他の実装済み機能
ES2025以前に追加された機能で、本書に追加された内容:
5. **Dynamic Import** [ES2020] (#1792)
- Import Attributesと合わせて、動的インポートの解説を追加
6. **Array.prototype.flatMap** [ES2019]
- PR: #1836 (マージ済み)
- 配列の章にflatMapメソッドの解説を追加
## リリースノート案
### JavaScript Primer v7.0.0: ECMAScript 2025対応
JavaScript Primer v7.0.0をリリースしました。
v7では、ECMAScript 2025の対応と、イテレータ・ジェネレータの章を新規追加しました。
#### 主な変更点
##### 新章: イテレータとジェネレータ [ES2025]
イテレータとジェネレータについて解説する新しい章を追加しました。
ES2025で追加されたIterator Helpersも含めて、モダンなJavaScriptにおけるイテレータの使い方を学べます。
```javascript
// Iterator.fromを使った例
const iterator = Iterator.from([1, 2, 3])
.map(x => x * 2)
.filter(x => x > 2);
for (const value of iterator) {
console.log(value); // 4, 6
}
```
関連章:
[イテレータとジェネレータ](https://jsprimer.net/basic/iterator-generator/)(新規追加)
##### RegExp.escape メソッド [ES2025]
正規表現で特殊な意味を持つ文字を安全にエスケープするメソッドが追加されました。
文字列の中に正規表現として意味を持つ特殊文字が含まれていても、自動的にエスケープできます。
```javascript
const escaped = RegExp.escape("+");
console.log(escaped); // \+
```
関連章: [文字列](https://jsprimer.net/basic/string/)
##### Set Methods [ES2025]
Setオブジェクトに集合演算を行うメソッドが追加されました。
数学的な集合操作を簡潔に記述できるようになります。
```javascript
const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);
// 積集合
setA.intersection(setB); // Set { 2, 3 }
// 和集合
setA.union(setB); // Set { 1, 2, 3, 4 }
// 差集合
setA.difference(setB); // Set { 1 }
```
関連章: [Map/Set](https://jsprimer.net/basic/map-and-set/)
##### Import Attributes [ES2025]
JavaScript以外のファイル(JSON等)をモジュールとして読み込む構文が標準化されました。
```javascript
// Import Attributes
import data from "./data.json" with { type: "json" };
```
関連章: [ECMAScriptモジュール](https://jsprimer.net/basic/module/)
##### Dynamic Import [ES2020]
動的にモジュールを読み込む機能の解説を追加しました。
```javascript
// Dynamic Import
const module = await import("./module.js");
```
関連章: [ECMAScriptモジュール](https://jsprimer.net/basic/module/)
##### Array.prototype.flatMap メソッド [ES2019]
配列のmapとflatを組み合わせた処理を効率的に行えるメソッドです。
```javascript
const nested = [[1], [2, 3], [4]];
const result = nested.flatMap(x => x.map(n => n * 2));
// [2, 4, 6, 8]
```
関連章: [配列](https://jsprimer.net/basic/array/)
#### その他の更新
- Node.js 22.18.0に対応
- 各種依存関係の更新
#### JavaScript Primerへの支援
JavaScript Primerは、Open Collectiveを通じてプロジェクトの更新に関わる資金を募っています。
継続的な更新のために、ぜひご支援をお願いします。
- [JavaScript Primer - Open
Collective](https://opencollective.com/jsprimer)
---
詳細な変更内容は[リリースノート](https://github.com/asciidwango/js-primer/releases)を参照してください。
## TODO
- [ ] `/source/intro/README.md`の確認
- 73行目の`ECMAScript {{book.esversion}}`が自動的に2025に更新されることを確認
## テスト
- [x] ローカルでビルドが成功することを確認
- [x] 既存のテストがすべてパスすることを確認
- [x] ES2025の新機能のサンプルコードが動作することを確認
## 関連Issue/PR
- Meta Issue: fix #1778 - ES2025の対応
- #1784 / #1837 - RegExp.escape
- #1784 / #1804 - Set Methods
- #1783 - Import Attributes
- #1782 / #1825 - Iterator Helpers & イテレータとジェネレータの章
- #1792 - Dynamic Import
- #1836 - Array.prototype.flatMap
## 参考資料
- [ECMAScript 2025 Language Specification](https://tc39.es/ecma262/)
- [過去のリリースノート](https://github.com/asciidwango/js-primer/releases)1 parent 8776166 commit 6c1a17c
4 files changed
+6
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
89 | | - | |
| 89 | + | |
90 | 90 | | |
91 | 91 | | |
92 | 92 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
23 | | - | |
| 22 | + | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
224 | 224 | | |
225 | 225 | | |
226 | 226 | | |
| 227 | + | |
| 228 | + | |
227 | 229 | | |
228 | 230 | | |
229 | 231 | | |
| |||
0 commit comments