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