Przyszłość

Komisja ECMA CT39 planuje wydawać kolejne wersje standardu ECMAScript co około 12 miesięcy.

Kolejne wersje

ES7

Standard ECMAScript 7, znany też jako ES2016, został opublikowany w Czerwcu 2016.

ES7 dodaje do standardu dwa nowe elementy: metodę Array.prototype.includes() oraz operator potęgowania **.

ES 8

Niebawem ukaże się standard ECMAScript 8 - ES2017.

ES8 dodaje jedną znaczącą funkcjonalność: funkcje async/await.

ES.Next

Jest to nazwa dla obecnie kolejnej wersji standardu. Jej elementy nazywane są propozycjami.

Nowe funkcjonalności

Kolejne wersje ECMAScript przyniosą sporo nowych funkcjonalności. Poniżej lista kliku najciekawszych.

Array.prototype.includes() ES7

Obecnie aby sprawdzić czy element znajduje się w tablicy trzeba skorzystać z metody Array.indexOf().

let numbers = [1, 2, 3];

let containsOne = numbers.indexOf(1) > -1;

console.log(containsOne); // -> true

Nowa metoda Array.includes() pozwoli na prostszy zapis.

let numbers = [1, 2, 3];

let containsOne = numbers.includes(1);

console.log(containsOne); // -> true

Operator potęgowania ES7

Obecnie aby podjeść x do potęgi y należy wykorzystać metodę Math.pow().

let x = 2;
let y = 3;
let result = Math.pow(x,y);

console.log(result); // -> 8

Będziemy mogli zapisać tę operację prościej wykorzystując operator **.

let x = 2;
let y = 3;
let result = x ** y;

console.log(result); // -> 8

Funkcje async/await ES8

Funkcje async/await są nowym sposobem obsługiwania asynchronicznych akcji.

Operator spread

Operator spread jest przeciwieństwem operatora resztowego.

let [a, ...b] = [1, 2, 3];

console.log(a); // -> 1
console.log(b); // -> [2, 3]

let numbers = [a, ...b];

console.log(numbers) // -> [1, 2, 3];

Operator ... pozwala podzielić tablicę na pojedyncze elementy.

Dekoratory

Jeśli nasza funkcja będzie przyjmowała parametry target, name oraz descriptor i zwracała descriptor to będzie mogła zostać użyta jako dekorator.

function readonly (target, name, descriptor){
  descriptor.writable = false;
  return descriptor;
}

class Person {
  @readonly   
  name () { 
    return `${this.first} ${this.last}`; 
  } 
}

Opcjonalne adnotacje typów

Będziemy mogli wykorzystywać adnotacje typów znane z Flow lub te z języka TypeScirpt.

function square (a: number, b: number): number {
  return a * b;
}

Źródła

results matching ""

    No results matching ""