Avatar ·

extends e implements en TypeScript: ¿cuál es la diferencia?

¡Hola a todos! Acabo de empezar a aprender TypeScript después de JavaScript y me confundí con dos palabras clave: `extends` e `implements`. Parece que ambas se usan para trabajar con clases e interfaces, pero no entiendo cuándo aplicar cada una. Tengo una interfaz simple `Animal` que describe propiedades y métodos básicos: ```typescript interface Animal { name: string; makeSound(): void; } ``` Y quiero crear una clase `Dog`. En ejemplos, he visto que se usan tanto `extends` como `implements`: ```typescript // Opción 1: implements class Dog implements Animal { name: string; constructor(name: string) { this.name = name; } makeSound() { console.log("Woof!"); } } // Opción 2: extends (si hubiera una clase base) class AnimalBase { name: string; constructor(name: string) { this.name = name; } } class Dog extends AnimalBase { makeSound() { console.log("Woof!"); } } ``` Pero no entiendo cuál es la diferencia fundamental. ¿Cuándo usar