Fundamentos TypeScript com carros
Ensinando TypeScript para o meu filho autista (pt 1)
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.