AnyCompiler

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);
Output
{ 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"));
Output
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");
Output
Moving up
Moving left

A seguir: funções — parâmetros tipados, tipos de retorno, e parâmetros opcionais e padrão.