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.```````