Classes
Classes in TypeScript are a foundational concept from object-oriented programming (OOP). They provide a blueprint for creating objects, encompassing both the data attributes and the methods to manipulate this data.
Defining a Class
In TypeScript, a class is created using the class keyword. Classes may contain:
Fields: These are variables within the class that store data.
name: string;
Constructor: This is a special method used to initialize a new instance of the class.
 constructor(name: string) {
     this.name = name;
 }
Methods: Functions defined within the class to perform specific tasks.
speak(): void {
    console.log(`${this.name} makes a noise.`);
}
Inheritance
TypeScript supports inheritance, allowing a new class (known as a subclass) to derive from an existing class (superclass). The extends keyword facilitates this.
When a subclass extends a superclass, it inherits all properties and methods. However, it can also:
- Add new properties or methods.
 - Override existing methods.
 
Example:
class Animal {
    name: string;
    constructor(name: string) {
        this.name = name;
    }
    speak(): void {
        console.log(`${this.name} makes a noise.`);
    }
}
Exercise
Using the inheritance concept in TypeScript, you're tasked to extend the Animal class to craft a Dog class. Ensure the Dog class overrides the speak method so it prints ${name} barks when called.