TypeScript Tipos Básico
Interfaces
Em TypeScript, uma interface descreve a forma de um objeto: quais propriedades ele deve ter e seus tipos. Interfaces são usadas para tipar contratos e podem ser estendidas com extends, permitindo herdar membros de uma ou mais interfaces. Também é possível declarar a mesma interface várias vezes; o TypeScript mescla automaticamente as declarações (declaration merging), útil para aumentar tipos de bibliotecas. A escolha entre interface e type depende do caso: interfaces são ideais para contratos de objetos e podem ser mescladas, enquanto tipos são mais flexíveis para uniões, interseções e tipos primitivos.
Pontos-chave
interfacedefine um contrato para objetos, com propriedades e métodos tipados.extendspermite herdar membros de uma ou mais interfaces, promovendo reuso.- Declarar a mesma interface duas vezes faz o TypeScript mesclar as declarações automaticamente.
typeé mais versátil para uniões, interseções e tipos primitivos, mas não sofre merging.- Use
interfacepara contratos de objetos etypepara composições complexas.
// Exemplo de interface e extends
interface Animal {
nome: string;
emitirSom(): void;
}
interface Cachorro extends Animal {
raca: string;
}
const rex: Cachorro = {
nome: "Rex",
raca: "Labrador",
emitirSom() {
console.log("Au au!");
},
};
rex.emitirSom(); // Au au!
// Declaration merging
interface Config {
url: string;
}
interface Config {
timeout: number;
}
const cfg: Config = { url: "https://api.com", timeout: 5000 };
console.log(cfg);
// Interface vs type
type Ponto = { x: number; y: number };
const p: Ponto = { x: 1, y: 2 };
console.log(p);