https://pawelgrzybek.com/whats-new-in-ecmascript-2025/
-
В регулярках можно несколько раз указывать одну и ту же именованную группу const pattern = /ECMAScript(?[0-9]{4})|ES(?[0-9]{2})/;
-
Добавлены разные методы для Set `const setOne = new Set([1, 2, 3]); const setTwo = new Set([3, 4, 5]);
setOne.intersection(setTwo); // Set(1) { 3 } setOne.union(setTwo); // Set(5) { 1, 2, 3, 4, 5 } setOne.difference(setTwo); // Set(2) { 1, 2 } setOne.symmetricDifference(setTwo); // Set(4) { 1, 2, 4, 5 }
setOne.isSubsetOf(setTwo); // false setOne.isSupersetOf(setTwo); // false setOne.isDisjointFrom(setTwo); // false
- Модификаторы шаблона можно применять непосредственно к группам, а не всему выражению `const pattern = /^(?i:bearer) abc$/;
pattern.test("bearer abc"); // true pattern.test("Bearer abc"); // true pattern.test("bEaReR abc"); // true pattern.test("bearer ABC"); // false
-
Можно явно объявлять типы импортируемого файла `// Import import data from "./data.json" with { type: "json" };
-
Различные методы для итераторов Раньше приходилось делать Array.from и уже для него делать map. `const iter = [..."ECMAScript2025"].values(); const iterNumeric = iter.filter((c) => /^d$/.test(c));
-
Promise.try() Оборачивает любую функцию в обещение. `const handleAction = (action) => Promise.try(action) // 👈👈👈 .then((result) => console.log(result)) .catch((error) => console.error(error)) .finally(() => console.log("done"));
handleAction(() => "look ma, no promise!");
-
Добавляется Float16Array. Если до этого никогда не использовал Float32Array или Float64Array - можно не вникать. Это нужно для тех, кто занимается вычислениями в условиях ограниченной памяти.
-
Экранирование в регулярках `const sentence = "He has two dogs. I have one dog."; const pattern = /dog./; const newSentence = sentence.replace(pattern, "cat.");
console.log(newSentence); // He has two cat.. I have one dog. Мы хотели точку как символ, а в паттерне эта точка означала любой один символ. При помощи новой конструкции можно будет делать так: `const sentence = "He has two dogs. I have one dog."; const pattern = new RegExp(RegExp.escape("dog.")); // 👈👈👈 const newSentence = sentence.replace(pattern, "cat.");
console.log(newSentence); // He has two dogs. I have one cat.```````