A Microsoft lançou recentemente o TypeScript 2.1, trazendo diversas funcionalidades que auxiliam a reduzir a quantidade de código e aumentar a legibilidade. Além disso, não é mais necessário o uso do Babel para gerar código ES5 para as funcionalidades async/await.
Antes deste release, o TypeScript já suportava a funcionalidade async/await, mas somente para gerar código ES2015. Consequentemente, isso funcionava corretamente somente se o código JavaScript gerado fosse executado em navegador que já possui suporte nativo para o async/await. Os desenvolvedores precisavam adicionar um transpiler (como o Babel) no processo de build para conseguir converter a saída do TypeScript em ES5 e assim conseguir gerar código compatível com qualquer navegador.
Na a versão 2.1, o TypeScript pode gerar async/await em ES3/ES5, dispensando a necessidade de utilizar o Babel.
Para os desenvolvedores React que utilizam TypeScript, a falta do operador spread significava alterar o código ou adicionar o Babel para resolver isso. No React, o operador spread é geralmente utilizado para passar propriedades para um componente que esteja um nível abaixo. Sem o operador spread, os desenvolvedores acabam utilizando a funcionalidade object.assign para combinar objetos. O resultado é similar, mas o operador spread reduz a quantidade de código e aumenta a legibilidade.
Como a funcionalidade async/await e o operador spread já estão disponíveis no Babel, Daniel Rosenwasser (TypeScript Program Manager) comentou que o atraso para essas funcionalidades estarem disponíveis somente na versão 2.1, foi para garantir que o sistema de tipagem continuasse funcionando conforme o esperado:
Quando nós implementamos uma funcionalidade no TypeScript, demoramos um tempo maior para garantir que a tipagem esteja funcionando corretamente e que a performance seja aceitável. Isso significa que quando utilizamos o operador rest/spread, não queremos que o parâmetro seja de qualquer tipo, pois isso deixaria os desenvolvedores frustrados caso cometessem um erro. Com o async/await, tivemos que reescrever nosso pipeline, pois precisávamos manter a paridade em ambas saídas. Investimos bastante nisso e o TypeScript está extremamente rápido.
No anúncio do TypeScript 2.1, Rosenwasser detalha outras funcionalidades como o operador keyof, o imports, o mapped types. Rosenwasser diz que o mapped types é definitivamente a funcionalidade mais interessante desse release 2.1, permitindo que o desenvolvedor não precise fazer variantes para objetos já existentes quando as propriedades são muito similares. Sobre a melhoria na funcionalidade import, Rosenwasser diz que a nova solução ficou mais flexível.
O TypeScript 2.1 está disponível na página oficial do página oficial do TypeScript.