> For the complete documentation index, see [llms.txt](https://uclsanca.gitbook.io/learn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://uclsanca.gitbook.io/learn/web-avancado/reactjs/um-pouco-de-typescript.md).

# Um pouco de Typescript

#### O que é?

O Typescript é um conjunto de ferramentas e formas mais eficientes de escrever códigos em JS, adicionando recursos que não estão presentes nativamente na linguagem.

A principal vantagem de utilizá-lo é a sua **tipagem estática** (e, consequentemente, **forte**), não presente de forma nativa em Javascript. Isso significa que com o Typescript, devemos indicar qual tipo de dado aquela variável deverá ser, não podendo ser alterado ao longo do código. Assim, com o uso de Typescript, fica claro qual tipo de dado está sendo usados ao longo do código, facilitando manutenções, detecção de erros e entendimento do programa.

Antes de continuar, gostaríamos de mostrar as interfaces do TypeScript para que você não seja pego de surpresa no futuro. Interfaces são uma forma de definir a estrutura de dados complexos no TypeScript, como:

```tsx
interface Usuario {
  nome: string;
  idade: number;
  cpf: string;
  adulto: boolean;
  cnh?: string; // O ? indica que o usuário pode ou não ter uma CNH, 
                // garantindo que não ocorra erro se não houver uma.
}

// A partir de agora, podemos definir itens do tipo "Usuario", ou seja,
// eles precisam ter todas essas informações.

//agora podemos:
// colocamos a variavel : (dois pontos) e o tipo que ela possui
// voce pode omitir esse tipo, ai o typescript ira interpretar conforme
// a primeira vez que voce definir a variavel
const usuario: Usuario = { 
	nome: "João", 
	idade: 30, 
	cpf: "123.456.789-00", 
	adulto: true 
};
```
