TypeScript5minutos de leitura

Fundamentos TypeScript com carros

Ensinando TypeScript para o meu filho autista (pt 1)

pedro-no-carrinho

Pedro tem 8 anos e é autista.

Ele disse que quer aprender a programar pra trabalhar com o papai. Esta série é pra ele, com carros, que é o hiperfoco dele.

Começamos pelos tipos primitivos e especiais, sempre ligando cada um a uma parte do carro.

number

O velocímetro e o hodômetro devolvem número. Só número.

function lerVelocidade(): number {}
// 80
function lerQuilometragemTotal(): number {}
// 230000

Sem isso no painel, não dá pra saber a velocidade nem quantos km o carro rodou.

string

Placa, marca, modelo: texto com letras e números.

function lerPlacaDoCarro(): string {}
// 'ABC-1D34'
function lerMarcaEModelo(): string {}
// 'Chevrolet Classic'

boolean

Ligado ou desligado. Motor funcionando ou não.

function motorEstaLigado(): boolean {}
// true | false

null

A bagagem que ainda vai pro porta-malas: o espaço existe, o conteúdo ainda não.

let bagagem: string | null = null;

undefined

O slot vazio no console. Ninguém decidiu o que instalar ali.

let acessorioDoConsole;
/* Nada foi atribuído ainda */

symbol

Dois adesivos com o mesmo nome em lugares diferentes do carro. O Symbol separa um do outro.

const adesivo1 = Symbol("adesivo");
const adesivo2 = Symbol("adesivo");

const carro = {
  adesivo: "adesivo no capô",
  [adesivo1]: "adesivo embaixo do banco",
  [adesivo2]: "adesivo na caixa de roda"
}

console.log(Object.values(carro))
// ['adesivo no capô']

console.log(carro[adesivo1])
// 'adesivo embaixo do banco'

console.log(carro[adesivo2])
// 'adesivo na caixa de roda'

any

O porta-trecos sem organização: vassoura, ferramenta, bola… você nunca sabe o que vai puxar.

let portaTrecos: any = "vassoura";
portaTrecos = 22;
portaTrecos = null;
portaTrecos = false;

unknown

O porta-luvas fechado. Tem algo dentro, mas você abre e confere antes de usar.

let objetoNoPortaLuvas: unknown = "manual do carro";

function lerManual(manual: string) { /* ... */ }

if (typeof objetoNoPortaLuvas === "string") {
  lerManual(objetoNoPortaLuvas)
}

never

Quando a função não devolve nada de propósito, como tentar ligar um motor que não existe mais.

function ligarMotorQuebrado(): never {
  throw new Error("Kaboom!");
}

void

Abrir porta ou porta-malas: a ação acontece, mas não retorna valor.

function abrirPortaDoCarro(): void {}

Próximo episódio: mais tipos, ainda com carros. A série continua em breve.