extends and implements in TypeScript: what's the difference?
Hi everyone! I just started learning TypeScript after JavaScript and got confused about two keywords — `extends` and `implements`. They both seem to be used for working with classes and interfaces, but I don't understand when to use which.\n\nI have a simple `Animal` interface that describes basic properties and methods:\n\n```typescript\ninterface Animal {\n name: string;\n makeSound(): void;\n}\n```\n\nAnd I want to create a `Dog` class. In examples, I've seen both `extends` and `implements` being used:\n\n```typescript\n// Option 1: implements\nclass Dog implements Animal {\n name: string;\n constructor(name: string) {\n this.name = name;\n }\n makeSound() {\n console.log("Woof!");\n }\n}\n\n// Option 2: extends (if there was a base class)\nclass AnimalBase {\n name: string;\n constructo