Kiemelt kép

ES2019: Ezek lesznek a JavaScript újdonságai

Az Ecma International TC39 csapata még február elején véglegesítette az ES2019 (ES10) funkcióit. Ez a gyakorlatban azt jelenti, hogy az összes ebbe a verzióba szánt proposal Stage 4 (végleges) állapotba került. Ebben a posztban pedig megnézzük mik ezek! 

Array.prototype.{flat,flatMap}

Az új flat metódussal egy új tömböt lehet létrehozni a megadott tömb elemeiből rekurzívan. A megadott paraméterrel (alapból 1) lehet szabályozni, hogy az egymásba ágyazott tömbökből milyen mélyen olvadjanak össze az elemek egy új tömbbe.

let arr1 = [1, 2, [3, 4]].flat(); // [1, 2, 3, 4]
let arr2 = [1, 2, [3, 4, [5, 6]]].flat(2); // [1, 2, 3, 4, 5, 6]

Természetesen elkészült ennek flatMap verziója is, amely 1-es mélységben készít egy új tömböt, de közben módosítja is azokat, mint a map.

let arr = [1, 2, 3, 4];
arr.map(x => [x * 2]); // [[2], [4], [6], [8]]
arr.flatMap(x => [x * 2]); // [2, 4, 6, 8]

MDN flat() referencia
MDN flatMap() referencia

Object.fromEntries

Ez a metódus Objectet csinál egy kételemű tömbökből álló tömbből. A tömbök első eleme lesz a kulcs, a második pedig az érték.

const arr = [['0', 'a'], ['1', 'b'], ['2', 'c']];
const obj = Object.fromEntries(arr);  // { 0: "a", 1: "b", 2: "c" }

MDN fromEntries() referencia

String.prototype.{trimStart,trimEnd}

Az ES2019-ben bevezetésre kerül a trimStart() és trimEnd() metódus is a trim() mellé. Korábban is voltak böngészőspecifikus megoldások, amivel egy string elejéről és végéről le lehetett vágni a whitespace karaktereket (trimLeft, padLeft, stb). Mostantól egységes lesz ez is, de szerencsére a régiek maradnak aliasként.

'  abc  '.trimStart() // "abc  "
'  abc  '.trimEnd() // "  abc"

MDN trimStart() referencia
MDN trimEnd() referencia

Symbol.prototype.description

Mostantól le lehet kérdezni az (opcionálisan) megadott Symbol “description”-t. 

let sym = new Symbol('desc');
sym.description; // "desc"

MDN referencia

Opcionális catch binding

Az ES2019 egyik proposal-jának hála már nem lesz kötelező megadni az Exception típusát, ha az amúgy sem fontos. Néha biztosan jól fog jönni.

try {
  // ...
} catch {
  // ...
}

Egyéb fejlesztések

  • Function.prototype.toString (MDN)
  • JSON.stringify változások (proposal)

Forrás: InfoQ, TC39’s GitHub, MDN


Ha nem szeretnél lemaradni a hasonló posztokról, kövesd a blog Facebook oldalát!