AnyCompiler

Objects e Interfaces

Uma interface descreve o formato que um objeto deve ter — quais propriedades ele precisa, e de que tipo é cada uma. Uma vez que você escreve uma, o TypeScript verifica todo objeto que você afirma que a corresponde.

interface Person {
  name: string;
  age: number;
}

let alice: Person = { name: "Alice", age: 30 };
console.log(alice);
console.log(alice.name);
Output
{ name: 'Alice', age: 30 }
Alice

Propriedades opcionais e readonly

Um ? depois do nome de uma propriedade a torna opcional — um objeto pode omiti-la completamente. readonly marca uma propriedade que pode ser definida uma vez (geralmente quando o objeto é criado) mas nunca reatribuída depois disso.

interface Product {
  readonly id: number;
  name: string;
  discount?: number;
}

let item: Product = { id: 1, name: "Keyboard" };
console.log(item);

item.name = "Mechanical Keyboard";
console.log(item);
Output
{ id: 1, name: 'Keyboard' }
{ id: 1, name: 'Mechanical Keyboard' }

item.id = 2 seria sinalizado imediatamente — readonly é aplicado em tempo de compilação, da mesma forma que qualquer outra regra de tipo.

A seguir: type aliases e union types — nomear um tipo, e descrever um valor que poderia ser de mais de um tipo.