Avatar ·

extends e implements em TypeScript: qual a diferença?

Olá a todos! Comecei a estudar TypeScript depois de JavaScript e fiquei confuso com duas palavras-chave — `extends` e `implements`. Ambas parecem ser usadas para trabalhar com classes e interfaces, mas não entendo quando usar cada uma. Tenho uma interface simples `Animal` que descreve propriedades e métodos básicos: ```typescript interface Animal { name: string; makeSound(): void; } ``` E quero criar uma classe `Dog`. Nos exemplos, vi que usam tanto `extends` quanto `implements`: ```typescript // Opção 1: implements class Dog implements Animal { name: string; constructor(name: string) { this.name = name; } makeSound() { console.log("Woof!"); } } // Opção 2: extends (se houvesse uma classe base) class AnimalBase { name: string; constructor(name: string) { this.name = name; } } class Dog extends AnimalBase { makeSound() { console.log("Woof!"); } } ``` Mas não entendo qual é a diferença fundamental. Quando usar