In Typescript, this and super are keywords used in object-oriented programming to refer to the current instance of a class and the base class, respectively.
  
  
  This keyword
Definition:  Refers to the current instance of the class.
Use Case:
- Access instance properties and methods.
 - Call another method within the same class.
 - Pass the current object as an argument
 
class Pizza {
    name: string
    constructor(name: string){
        this.name = name;
    }
    cook():void{
        console.log(`Start cooking ${this.name} pizza`)
    }
}
const pepperoniPizza = new Pizza("pepperoni");
pepperoniPizza.cook();
  
  
  super keyword
- Definition: Refers to the base class (the parent class) of the current class.
 - Use Cases: 
- Call the constructor of the base class.
 - Access methods and properties from the base class
 
 
Example:
class Animal {
    name: string;
    constructor(name: string) {
      this.name = name;
    }
    makeSound(): void {
      console.log(`${this.name} makes a sound.`);
    }
  }
  class Dog extends Animal {
    constructor(name: string) {
      super(name); // Calls the constructor of the base class
    }
    makeSound(): void {
      super.makeSound(); // Calls the base class method
      console.log(`${this.name} barks.`);
    }
  }
  const dog = new Dog("Buddy");
  dog.makeSound();
and the output include: makeSound() of Base Class is Animal and makeSound of subclass is Dog like this:
Buddy makes a sound.
Buddy barks.
Key Points:
1. this:
- Alway refers to the current instance
 - Can be used in constructor, method, or arrow functions.
 - In arrow functions, 
thisis lexically bound to the surrounding context. 
2. super:
- Can only be used in classes that extend another class.
 - Must be called in the constructor before accessing 
thisin a derived class. - Can be used to call parent class methods.
 
class Parent {
  protected message: string = "Hello from Parent!";
}
class Child extends Parent {
  showMessage(): void {
    console.log(super.message); // Accesses the parent class property
  }
}
const child = new Child();
child.showMessage(); // Output: Hello from Parent!
By using this and super correctly, you can manage inheritance and object behavior effectively in Typescript.
              

    
Top comments (0)