• Categorias
    • Desenvolvimiento de software
    • Machine Learning & AI
    • Carreira de programador e dicas
    • Histórias de sucesso
  • Materiais Gratuitos
    • Calculadora CLT x PJ
    • Quiz de Front-end
    • Quiz de Mobile
    • Guia Full Stack atualizado
    • Guia de Negociação Salarial para Devs
    • Modelo de Currículo Internacional
  • Para Talentos
    • Criar perfil gratis
    • Ver vagas
  • Categorias
    • Desenvolvimiento de software
    • Machine Learning & AI
    • Carreira de programador e dicas
    • Histórias de sucesso
  • Materiais Gratuitos
    • Calculadora CLT x PJ
    • Quiz de Front-end
    • Quiz de Mobile
    • Guia Full Stack atualizado
    • Guia de Negociação Salarial para Devs
    • Modelo de Currículo Internacional
  • Para Talentos
    • Criar perfil gratis
    • Ver vagas

Início TypeScript 3.4: as novidades

  • Foto de Geekhunter Geekhunter
  • março 7, 2025

TypeScript 3.4: as novidades

Se você não conhece muito o Typescript, pelo menos é provável que já tenha ouvido falar. Com certeza você já se deparou com algum chefe, amigo ou algum conteúdo na internet tratando sobre o assunto.

Resumidamente Typescript é um superset (um superconjunto) de JavaScript desenvolvido pela Microsoft que adiciona tipagem e alguns outros recursos a linguagem. Atualmente está na versão 3.4.

As novidades do TypeScrit 3.4 é o meu tema de hoje. Vem conferir!

>>Leitura Recomendada:
Svelte: o framework JavaScript que não é um framework

As novidades da versão 3.4

A versão 3.4 do Typescript foi lançada na última sexta-feira, dia 29/03. A nova versão trouxe algumas melhorias interessantes. Fiz um review com a listagem dessas melhorias.

Confira aqui:

Flag — incremental – construções subsequentes mais rápidas

Antes de rodar o seu código Typescript é necessário compilar. Uma maneira de fazer isso é rodar o Typescript em modo — watch.

Nesse caso, quando um arquivo sofre alguma mudança o Typescript é capaz de identificar os arquivos que serão afetados e precisam ser recompilados. Isso evita que o seu projeto seja todo recompilado.

Para evitar que todos os usuários mantenham um processo tsc –watch rodando, a versão 3.4 do Typescript trouxe uma nova flag chamada
— incremental.

Com isso o Typescript salva um esquema de informações do projeto da última compilação e na próxima vez que for invocado com –incremental, irá usar essas informações para verificar e compilar as alterações da melhor maneira possível.

Exemplo:


// tsconfig.json
{
   "compilerOptions": {
       "incremental": true,
       "outDir": "./lib"
   },
   "include": ["./src"]
}

Quando executamos o comando tsc, o TypeScript busca o arquivo .tsbuildinfo no diretório “/lib” (caso o arquivo não exista, será criado um novo arquivo).

Veja no quadro abaixo a diferença de tempo adicionando o –incremental no tsconfig.json do projeto, utilizando o Visual Studio Code como ferramenta.

>> Leitura recomendada:
React vs Vue vs Angular: qual escolher?

AçãoTempo
Compilação sem o –incremental47.54s
Primeira compilação com o –incremental52.77s
Compilação seguinte com o –incremental 11.49s

Melhorias para ReadonlyArray e Readonly

O tipo ReadonlyArray descreve as arrays que podem ser apenas lidas. Qualquer variável com uma referência para um ReadonlyArray não pode adicionar, remover ou substituir qualquer elemento do array.


function foo(arr: ReadonlyArray<string>) {
   arr.slice();            // okay
   arr.push("hello!"); // error!
}

A nova versão do TypeScript 3.4 traz uma nova sintaxe para o ReadonlyArray usando um novo modificador readonly para tipos de arrays.


function foo(arr: readonly string[]) {
   arr.slice();             // okay
   arr.push("hello!"); // error!
}

Readonly tuplas

O TypeScript 3.4 também traz um novo suporte para tuplas readonly . Podemos adicionar a qualquer tipo de tupla a palavra-chave readonly para torná-la uma tupla readonly.

Nesse caso como era de se esperar, as tuplas readonly só podem ser lidas.


function foo(pair: readonly [string, string]) {
   console.log(pair[0]);   // okay
   pair[1] = "hello!";       // error
}

Ressalvas

Apesar da semelhança, inclusive com outras linguagens, em TypeScript o modificador readonly só pode ser usado em arrays e tuplas.


let err1: readonly Set<number>;  // error!
let err2: readonly Array<boolean>; // error!

let okay: readonly boolean[];          // works fine

>>Leitura Recomendada:
Leia nosso artigo sobre o Framework Angular

Variáveis em escopo global com GlobalThis

O TypeScript 3.4 apresenta uma nova maneira de acessar variáveis de escopo global.

Por mais surpreendente que seja, em alguns momentos, em nossas aplicações, o acesso a variáveis globais pode ser bem trabalhoso, principalmente por desenvolvermos aplicações em módulos.

Quem nunca teve problema com uma variável local, “escondendo” uma variável global? Em determinados ambientes é possível acessar objetos globais em browser, por meio do window, self, frame ou ainda usar o this, fora do strict mode.

Ao contrário das soluções acima, o globalThis oferece uma maneira padrão de acessar o escopo global, em diferentes ambientes. Veja o exemplo a seguir:


// arquivo global:

var valor = 100;

// Refere-se a variável 'valor' acima
globalThis.valor = 200;

Perceba que variáveis declaradas com let e const, não podem ser acessadas com o globalThis:


let valor = 42;
// error! Property 'valor' does not exist on 'typeof globalThis'.globalThis.valor = 333333;

É importante observar que o acesso ao escopo global através do globalThis foi padronizada na última versão do ECMAScript (ES10).

Com isso se você estiver utilizando navegadores antigos que não suportam essa funcionalidade, deve-se utilizar então, um pollyfill apropriado.

Essas foram algumas das melhorias implementadas na nova versão do TypeScript.  

E o lançamento das próximas implementações, já está previsto para o próximo mês de maio.

Caso queira acompanhar os lançamentos e novidades acesse a página de roadmap do Typescript no GitHub.

Valeu e até a próxima!



Foto de Geekhunter

Geekhunter

Python IDE
10 melhores IDEs e editores de código em Python para 2025
  • março 18, 2025
o que é commit
O que é Commit e como usar Commits Semânticos
  • dezembro 13, 2024
certificações em TI
10 certificações em TI muito valorizadas hoje
  • novembro 20, 2024
Consultor SAP: o que faz, salário e como se tornar um
  • março 20, 2025
brainfuck
Brainfuck: A linguagem esotérica que desafia programadores até hoje
  • junho 27, 2025
gerente de tecnologia
As principais habilidades de um gerente de tecnologia
  • junho 27, 2025
vagas de TI
Vagas de TI: como encontrar uma que combine com você?
  • junho 26, 2025
Planejamento da equipe de metodologia scrum
Metodologia Scrum: o básico que todo DEV precisa saber
  • junho 24, 2025

Gosta do conteúdo? Assine nossa Newsletter!

Desenvolvimiento de software

Brainfuck: A linguagem esotérica que desafia programadores até hoje

  • Geekhunter
  • junho 27, 2025
Carreira de programador e dicas

As principais habilidades de um gerente de tecnologia

  • Geekhunter
  • junho 27, 2025
Desenvolvimiento de software

Vagas de TI: como encontrar uma que combine com você?

  • GeekHunter
  • junho 26, 2025
Desenvolvimiento de software

Metodologia Scrum: o básico que todo DEV precisa saber

  • Geekhunter
  • junho 24, 2025
Carreira de programador e dicas

Dicas de carreira: como criar seu perfil profissional com foco na área tech

  • GeekHunter
  • junho 24, 2025
AnteriorAnteriorDiagrama relacional: A base da estruturação de dados
Próximo[Guia completo] Como lidar com software legado?Próximo

Rod. José Carlos Daux – SC
401, 4120 – km 4, Bairro Saco
Grande – Florianópolis – SC
CEP 88032-005

Para Profissionais
  • Criar Perfil
  • Vagas de tecnologia
  • Blog TI
  • Criar Perfil
  • Vagas de tecnologia
  • Blog TI
Para Empresas
  • Plataforma de Recrutamento Tech
  • Serviço de Recrutamento Tech
  • Nossos Planos
  • GeekAcademy
  • Blog de RHTech
  • Perguntas Frequentes
  • Login Empresas
  • Plataforma de Recrutamento Tech
  • Serviço de Recrutamento Tech
  • Nossos Planos
  • GeekAcademy
  • Blog de RHTech
  • Perguntas Frequentes
  • Login Empresas
A Geekhunter
  • Sobre a GeekHunter
  • Suporte
  • Políticas de Privacidade
  • Termos de Uso
  • Portal LGPD
  • Sobre a GeekHunter
  • Suporte
  • Políticas de Privacidade
  • Termos de Uso
  • Portal LGPD

Add Your Heading Text Here