Da trilha de TypeScript Este conceito ainda não saiu como card do dia. ir para o card de hoje

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

  • interface define um contrato para objetos, com propriedades e métodos tipados.
  • extends permite 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 interface para contratos de objetos e type para composições complexas.
interfaces.ts
// 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);

Exercícios

  1. 1
    Fácil

    Criando uma interface simples

    Crie uma interface Pessoa com as propriedades nome (string) e idade (number). Depois, crie uma constante pessoa do tipo Pessoa e imprima uma mensagem com o nome e a idade.

    Resolver
  2. 2
    Médio

    Estendendo interfaces com extends

    Crie uma interface Funcionario que estende Pessoa (com nome e idade) adicionando cargo (string) e salario (number). Instancie um funcionário e imprima Nome: João, Cargo: Dev, Salário: 5000.

    Resolver
  3. 3
    Desafio

    Declaration merging e interface vs type

    Crie uma interface Config com url: string. Depois, declare novamente Config adicionando timeout: number. Crie um objeto config que atenda à interface mesclada e imprima URL: https://api.com, Timeout: 5000. Em seguida, crie um type Ponto com x e y e imprima a soma das coordenadas.

    Resolver

Continue estudando