# TypeScript

TypeScript é uma linguagem de programação de código aberto desenvolvida pela Microsoft. É um superconjunto sintático estrito de JavaScript e adiciona tipagem estática opcional à linguagem. Tipos fornecem uma maneira de descrever a forma de um objeto, fornecendo melhor documentação e permitindo que o TypeScript valide se seu código está funcionando corretamente. Como TypeScript é um superconjunto de JavaScript, os programas JavaScript existentes também são programas TypeScript válidos.
Foi considerada pelo público a 4ª linguagem "mais amada", de acordo com uma pesquisa conduzida pelo site Stack Overflow em 2018, e está entre as 15 linguagens mais populares, de acordo com uma pesquisa conduzida pela RedMonk.
Anders Hejlsberg, arquiteto da linguagem C# e criador das linguagens Delphi e Turbo Pascal, trabalhou no desenvolvimento do TypeScript. A linguagem pode ser usada para desenvolver aplicações JavaScript no lado cliente e lado servidor (Node.js ou Deno). Existem várias opções disponíveis para transcompilação. O TypeScript Checker padrão pode ser usado, ou o compilador Babel pode ser chamado para converter TypeScript em JavaScript.
TypeScript oferece suporte a arquivos de definição que podem conter informações de tipo de bibliotecas JavaScript existentes, assim como arquivos de cabeçalho C++ podem descrever a estrutura de arquivos de objeto existentes. Isso permite que outros programas usem os valores definidos nos arquivos como se fossem entidades TypeScript estaticamente digitadas. Existem arquivos de cabeçalho de terceiros para bibliotecas populares, como jQuery, MongoDB e D3.js. Cabeçalhos TypeScript para os módulos básicos do Node.js também estão disponíveis, permitindo o desenvolvimento de programas Node.js dentro do TypeScript.

## História

O TypeScript foi divulgado pela primeira vez em outubro de 2012 (na versão 0.8), após dois anos de desenvolvimento interno na Microsoft.
Logo após o anúncio, Miguel de Icaza elogiou a linguagem em si, mas criticou a falta de suporte maduro a IDE da Microsoft, Visual Studio, que não estava disponível no Linux e no OS X naquela época. Em abril de 2021 há suporte em outras IDEs e editores de texto, incluindo Emacs, Vim, Webstorm, Atom e o próprio Visual Studio Code da Microsoft.
TypeScript 0.9, lançado em 2013, adicionou suporte para tipos genéricos (generic types).
TypeScript 1.0 foi lançado na conferência de desenvolvedores Build da Microsoft em 2014. O Update 2 do Visual Studio 2013 passa a fornecer suporte integrado para TypeScript.
Em julho de 2014, a equipe de desenvolvimento anunciou um novo compilador TypeScript, alegando ganhos de desempenho de 5 vezes. Simultaneamente, o código-fonte, que estava inicialmente hospedado no CodePlex, foi movido para o GitHub.
Em 22 de setembro de 2016, o TypeScript 2.0 foi lançado; ele introduziu vários recursos, incluindo a capacidade de os programadores opcionalmente impedirem que variáveis ​​recebam valores nulos, às vezes referido como o erro de bilhões de dólares.
TypeScript 3.0 foi lançado em 30 de julho de 2018, trazendo muitas adições à linguagem como expressões de spread, parâmetros rest com tipos de tupla, parâmetros rest genéricos e assim por diante.
TypeScript 4.0 foi lançado em 20 de agosto de 2020. Embora esta versão não tenha introduzido nenhuma alteração significativa, ele adicionou recursos de linguagem, como Custom JSX Factories e Variadic Tuple Types.

## Exemplos
### Genéricos

Exemplo de uma árvore binária genérica em TypeScript:

### Componentes Web

Exemplo de uma interface gráfica usando componentes Web com o Lit:
E o uso: