Type Aliases e Union Types
Um type alias dá um nome a qualquer tipo, para que você possa reutilizá-lo em vez de repetir o mesmo formato em todo lugar. É funcionalmente parecido com interface para descrever objetos, mas type também pode nomear coisas que interface não pode, como unions.
type Point2D = { x: number; y: number };
let home: Point2D = { x: 0, y: 0 };
console.log(home);{ x: 0, y: 0 }Union types — um valor que pode ser de vários tipos
Um union type, escrito com |, significa que um valor pode ser qualquer um dos tipos listados. É a forma como o TypeScript expressa "isso genuinamente poderia ser qualquer um desses dois tipos de valor" sem abrir mão da segurança de tipos.
function formatId(id: string | number): string {
return `ID-${id}`;
}
console.log(formatId(42));
console.log(formatId("A17"));ID-42 ID-A17
Literal types
Um tipo também pode ser um valor literal específico em vez de uma categoria inteira — um union de literais é como o TypeScript expressa "uma dessas opções exatamente", parecido com um enum mas mais leve.
type Direction = "up" | "down" | "left" | "right";
function move(direction: Direction): void {
console.log(`Moving ${direction}`);
}
move("up");
move("left");Moving up Moving left
A seguir: funções — parâmetros tipados, tipos de retorno, e parâmetros opcionais e padrão.