O superconjunto de JavaScript tem nova versão beta, além da edição estabilizada.
A Microsoft lançou a versão de produção do TypeScript 2.7, assim como nova edição beta do subconjunto de JavaScript. Esta última adiciona uma estrutura de tipos condicionais para modelagem de software.
Com base na sintaxe condicional da JavaScript, os tipos deverão servir a modelagem de escolhas simples com base em tipos em tempo de execução, permitindo construções de tempo de design mais expressivas.
A construção assume a seguinte forma: A estende-se B?C: D. O que deve ser lido como: “Se o tipo A é atribuível a B, então o tipo resume-se a C e de outra forma torna-se D.”
Os tipos condicionais também oferecem uma nova maneira de inferir novos tipos daqueles comparados com a nova palavra-chave ”infer”, que introduz uma nova variável de tipo. O TypeScript 2.8 também oferece novos pseudónimos de tipo que usam tipos condicionais.
Mais recursos introduzidos no TypeScript 2.8:
‒ Suporte a comentários de directiva Pragma para especificar a origem de uma “factory” de JSX num ficheiro. A JSX é uma sintaxe semelhante à XML passível de ser integrada, que é suportada pelo TypeScript e pode ser transformada em JavaScript. Além disso, com a JSX, o “Element” é resolvido através da “factory” de JSX. O recurso é útil ao misturar e combinar bibliotecas, como a React e Preact, ou quando se mistura diferentes versões de uma biblioteca. Actualmente, quando a JSX é usada, o TypeScript faz uma busca por espaço de nomes global para encontrar certos tipos.
‒ Com a versão 2.8, o compilador tentará procurar o espaço de nomes com base na localização da “factory” JSX. A Microsoft aconselha que, no futuro, novas bibliotecas orientadas a JSX evitem esta sintaxe na sua abrangência total.
‒ A nova versão beta oferece ainda controle granular sobre modificadores de tipo mapeados permite uma sintaxe mais explícita para adicionar e remover modificadores em tipos mapeados, usando os operadores + e -.
Novos recursos no TypeScript 2.7
O TypeScript 2.7 traz três melhorias particularmente importantes:
‒ verificações de atribuição definitivas para propriedades de classe, tuplas de extensão fixa e melhorias na capacidade de restrição para o “in” e “instance” de operadores.
Com as tuplas de comprimento fixo, a Microsoft nota que “os tipos de tuplas agora codificam sua aridade [o número de elementos que eles incluem] no tipo da sua respectiva propriedade de comprimento, e as tuplas de diferentes tipos não são mais atribuíveis entre si”. Esta é uma mudança de ruptura.
O TypeScript 2.7 vem programado de modo a adicionar a refactoração do módulo CommonJS para ECMAScript 6, sendo esta a versão da especificação JavaScript normalizada e aprovada pela ECMA International em 2015.