ES8, o que vem por aí
Irei apresentar nesse post, um pouco sobre as propostas que se encontram em estágio 4 e que serão ou já foram implementadas no ECMAScript 2017.
O estágio 4, trata-se do último estágio em que as propostas são submetidas no processo do TC39, time que atualmente tem a função de manter e implementar novas funcionalidades ao Javascript.
Nesse estágio, encontram-se as propostas que serão implementadas ou que já foram, como por exemplo o exponentiation operator implementado na versão 7.
Abaixo, você encontra um pequeno resumo sobre o que é cada proposta dessa nova versão:
Shared memory and atomics
Trata-se de uma proposta inicial de Lars T. Hansen, que acabou entrando no estágio 4 recentemente no mês de janeiro, e que visa compartilhar os recursos entre os workers com o SharedArrayBuffer, eu particulamente não conheço muito sobre esse recurso, mas aqui você encontra um artigo bem detalhado.
Async Functions
Apresentada por Brian Terlson, essa proposta vem empolgando bastante o pessoal, trazendo uma maneira mais simples de se trabalhar com execuções assíncronas no Javascript, um pouco semelhante ao já implementado generators. porém uma outra proposta pretende trazer um iterador, o Async Iterator que se encontra em estágio 3.
let url = 'https://api.github.com/users/';
async function retrieveUser(username) {
let response = await fetch(`${url}${username}`);
let data = await response.json();
return data;
}retrieveUser('guuibayer');
Com ela podemos ter uma função que espera uma outra operação síncrona apenas utilizando duas novas palavras, o async e await, essa feature já se encontra disponível em alguns browers.
String padding
A proposta de Jordan Harband e Rick Waldron trata-se de dois novos métodos chamados padStart e padEnd.
let foo = 'F';
foo.padEnd(2, 'o'); // Foo
Utilizando padStart , da pra fazer aquele trechinho bem conhecido, haha.
let bar = ' Batman!';
bar.padStart(5, 'NaN'); // NaNNaNNaNNaNNaN Batman!
Brincadeiras a parte, há diversas coisas a se fazer, vai da sua criatividade para a utilização do método.
Object.values/Object.entries
A proposta de Jordan Harband, é a implementação de dois novos métodos para Object, values() e entries().
No caso de values() ele irá retornar um array com os valores das propriedades do objeto que lhe foi informado.
Object.values('Foo'); // ["F", "o", "o"]
Já entries(), irá retornar um conjunto de arrays, que conterá o valor da propriedade e sua posição.
Object.entries('Foo'); // [["0", "F"], ["1", "o"], ["2", "o"]]
Object.getOwnPropertyDescriptors
Proposta de Jordan Harband e Andrea Giammarchi, trás um objeto para cada propriedade do argumento passado, que contém algumas opções.
Object.getOwnPropertyDescriptors('Foo');{
{
configurable: false,
enumerable: true,
value: "F",
writable: false
},
{
configurable: false,
enumerable: true,
value: "o",
writable: false
},
{
configurable: false,
enumerable: true,
value: "o",
writable: false
}
};
Apenas essas?
Não, há outras propostas que atualmente se encontram em estágio 3, e poderiam entrar para a versão 8 do Ecmascript, são elas:
- SIMD.JS — SIMD APIs
- Function.prototype.toString revision
- Lifting Template Literal Restriction
- global
- Rest/Spread Properties
- Asynchronous Iteration
- import()
Aqui você encontra a tabela completa com todas propostas ativas.
E porque devo saber sobre isso?
Notamos que a cada ano uma nova versão vem sendo lançada, mesmo que com poucas novas implementações é de suma importância acompanhar o desenvolvimento da linguagem e também ajudar a evolui-la.