O que é Type Erasure no TypeScript?

COMPARTILHAR:

TypeScript é uma linguagem transpilada e há uma etapa no processo chamada eliminação de tipo .

Então, o que exatamente é transpilar e o que é eliminação de tipo?

Linguagens de programação de alto nível vs baixo nível

Antes de explicarmos mais, temos que entender as linguagens de alto nível e baixo nível.

As linguagens de alto nível são mais abstraídas do que as linguagens de baixo nível. Por abstraído, quero dizer que são mais fáceis de entender para os humanos.

Por exemplo, você diria que o código de máquina (binário) é de baixo nível e está mais próximo do computador do que o JavaScript. Linguagens de alto nível geralmente são mais simples de escrever e entender do que escrever linguagens de baixo nível (Assembly, por exemplo) onde você tem que entender e lidar com endereços de memória diretamente, e assim por diante.

A compilação e a transpilação são etapas muito semelhantes, mas não são idênticas. Vou explicar ambos para que você saiba a diferença.

O que é compilar?

Compilar é um termo geral para transformar o código que você escreveu em algum executável de nível inferior para o computador (geralmente código de máquina).

Um exemplo de algumas linguagens compiladas são Java, C # ou C. Às vezes é compilado em várias etapas, cada etapa otimizando o código e aproximando-o do código de máquina a cada “passagem” que faz.

Por meio desse processo, um nível superior, mais próximo da linguagem legível por humanos, acaba ficando “mais baixo” ou mais próximo do binário.

O que é transpilar?

Os transpiladores às vezes são chamados de “compiladores fonte para fonte” – uma forma abreviada de dizer “código-fonte para código-fonte”. Transpilar significa converter um idioma de alto nível superior para outro idioma de baixo nível.

Por exemplo, TypeScript é uma linguagem de alto nível, mas depois que é transpilada, é transformada em JavaScript (outra linguagem de alto nível). Ou Babel, por exemplo, pode transpilar o código ES6 JavaScript em ES5 JavaScript.

Os benefícios da transpilação são que você pode escrever uma linguagem de alto nível e ainda terminar com outra linguagem de alto nível.

Type Erasure no TypeScript

Parte desse processo de transpilação é chamado de eliminação de tipo.

O apagamento de tipo ocorre simplesmente quando todos os tipos são removidos do código TypeScript à medida que ele é transpilado para o JavaScript.

Os tipos que você usa no TypeScript não podem ser inspecionados em tempo de execução, quando o JavaScript está sendo executado. Os tipos são acessíveis apenas durante a etapa de compilação / transpilação.

Código TypeScript semelhante a este:

let name: string = 'Kealan';

Eventualmente é compilado / transpilado para este:

let name = 'Kealan'

A saída pode variar dependendo de suas etapas de construção específicas (a variável pode ser renomeada ou embutida), mas o exemplo de eliminação de tipo ainda permanece verdadeiro.

Isso não é apenas com tipos primitivos como number ou string – mas até mesmo com seus próprios tipos personalizados, você pode criar:

type StringType = string;
const firstName: StringType = "Kealan";

Leia também: Carreira em segurança da informação para programadores

Apagamento de tipo na prática

Mais do que apenas compreender conceitualmente o que é eliminação de tipo , este conceito explica uma etapa importante no processo de transpilação, em que os tipos são jogados fora e não são usados ​​no código-fonte gerado.

Isso também significa que partes do seu código nem mesmo são “usadas” em JavaScript durante a etapa de transpilação – e o código é completamente removido. Portanto, a interface de 100 linhas que você cria é removida e o código enviado ao usuário é menor.

Conclusão

Espero que algumas das etapas que o TypeScript executa para transformar seu código em JavaScript sejam um pouco mais claras e que você tenha uma boa visão geral das diferenças entre compilar e transpilar.

COMPARTILHAR:
brayan

Brayan Monteiro

Bacharel em Sistemas de Informação pela Faculdade Maurício de Nassau e desenvolvedor PHP. Além de programador, produzo conteúdo e gerencio blogs. Sou especialista em desenvolvimento de software, SEO de sites e em negócios digitais.