BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias TypeScript 2.7 está disponível

TypeScript 2.7 está disponível

A versão 2.7 do TypeScript foi lançada com várias novas funcionalidades e correções de bugs. Alguns dos destaques incluem suporte a validação de atribuição nas propriedades de classes, correção no tamanho das tuplas e inferência de tipos melhoradas para objetos literais. De modo geral as mudanças nesta versão melhoraram o sistema de tipos, funcionalidades do ES2015+, e a experiência do desenvolvedor com a linguagem TypeScript.

A versão 2.7 do TypeScript inclui algumas mudanças significativas, as quais os desenvolvedores devem estar atentos quando forem atualizar o código fonte para o TypeScript 2.7.

Quando questionado sobre os planos para a versão atual do TypeScript, o gerente do projeto, Daniel Rosenwasser disse:

Acredito no senso comum, estamos focados em facilitar a adoção e garantir que os nossos usuários atuais ainda obtenham novos valores ao investir no TypeScript. Estamos focados em eliminar dificuldades para iniciar na linguagem e por último focar na expressividade e em maior segurança.

Por exemplo, os usuários experientes de TypeScript estavam requisitando checagens mais rigorosas na inicialização de classes. Seguindo o caminho da checagem de tipos de funções estritas adicionada no TypeScript 2.6, a versão 2.7 adiciona checagem das propriedades de inicialização estritas das classes por meio da flag --strictPropertyInitialization. Esta flag garante que cada propriedade da instância da classe seja inicializada no construtor, ou por um inicializador de propriedade. Desenvolvedores que utilizam a flag --strict irão obter essa checagem adicional automaticamente quando atualizarem o código fonte para a versão 2.7. A utilização da flag strict é recomendada porque ela ajuda o desenvolvedor a encontrar e eliminar erros ou comportamentos inesperados.

Asserções de atribuição definitivas agora são possíveis, para instruir o analisador de controle de fluxo do TypeScript a sempre considerar uma variável definitivamente atribuída, mesmo quando o analisador do TypeScript for incapaz de provar a atribuição.

O arquiteto da linguagem TypeScript, Anders Hejlberg, falou sobre a melhoria na inferência de tipos para objetos literais:

Tivemos melhoria na inferência de tipos para múltiplos tipos literais do objeto ocorrendo no mesmo contexto. Quando múltiplos tipos literais do objeto contribuem para uma união de tipos, agora normalizamos o tipo literal do objeto de forma que todas as propriedades presentes em cada operação lógica sejam unidas na formação do tipo.

const obj = test ? { text: "hello" } : {}; // { text: string } | { text?: undefined } 
const s = obj.text; // string | undefined
Antes inferíamos o tipo {} para a constante obj e a segunda linha causava um erro, porque a constante obj parecia não ter propriedades. Isto obviamente não era o ideal.

Recursos adicionados na linguagem incluem melhorias na manipulação de classes estruturalmente idênticas na união de tipos e expressões com instanceof e agora type guards são inferidos no operador in.

A versão 2.7 do TypeScript também refina o suporte aos símbolos do ES2015+. Propriedades podem agora ser nomeadas com constantes do tipo symbol, permitindo o uso de um Identifier ou PropertyAccessExpression como parte do nome de uma propriedade declarada em uma interface, classe ou um tipo literal.

A interoperabilidade com o os módulo do CommonJS foi melhorada com o suporte para importar d do "cjs" com a flag --esModuleInterop. Internamente, o TypeScript utilizada módulos ES ao invés de módulos CJS. Rosenwasser explicou para o InfoQ a motivação por trás desta funcionalidade:

Sabíamos que existia um conflito entre a interoperabilidade dos módulos que tornava difícil para os usuários do Babel aprender TypeScript. Esta era uma barreira para novos usuários do TypeScript, por isso priorizamos a implementação da flag --esModuleInterop neste lançamento. Claro que existem atualizações nos padrões do ECMAScript, no qual estamos envolvidos e conscientes à medida que implementamos melhorias na linguagem.

O estágio 3 da proposta de separadores numéricos, esperada para ser parte do ES2018, foi incluída no TypeScript, ajudando a linguagem a se manter atualizada com os lançamentos anuais do JavaScript.

Algumas mudanças no TypeScript 2.7 visam melhorar a experiência do desenvolvedor. Ferramentas de desenvolvimento como o webpack e o Gulp irão se beneficiar da nova API de build incremental em tempo de compilação. A expectativa desta mudança é tornar mais fácil às ferramentas atualizarem apenas os recursos impactados por alterações de código ao invés de reconstruir o projeto inteiro a cada atualização incremental. Adicionalmente, fornecemos uma API atualizada do TypeScript que as IDEs podem utilizar para ajudar os desenvolvedores a corrigir automaticamente todos os erros identificados em um arquivo.

O TypeScript 2.7 está disponível via npm com o comando npm install -g typescript, ou via GitHub. Os esforços para o TypeScript já estão em andamento, com a próxima release programada para Março.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT