runtime.boot

Full Stack Systems
Production Mindset

CodeWithMihir

Engineering thoughtful products from interface to infrastructure.

CodeWithMihir

TypeScript Tutorial

TypeScript Abstract Classes Explained

Learn how abstract classes work in TypeScript, including abstract methods, shared behavior, inheritance, and when to use them.

Welcome back! I am Mihir, and in this lesson we will learn abstract classes in TypeScript.

An abstract class is a base class that cannot be created directly. It is meant to be extended by other classes.


Basic Abstract Class

abstract class Animal {
  abstract makeSound(): void;

  move(): void {
    console.log("Moving...");
  }
}

makeSound is abstract, so child classes must implement it.

move is a normal method and can be reused.


Extending an Abstract Class

class Dog extends Animal {
  makeSound(): void {
    console.log("Woof");
  }
}

const dog = new Dog();
dog.makeSound();
dog.move();

Dog must implement makeSound.


You Cannot Instantiate Abstract Classes

Invalid:

const animal = new Animal();

Abstract classes are only for inheritance.


Abstract Methods

Abstract methods have no body.

abstract class PaymentProcessor {
  abstract pay(amount: number): void;
}

Child classes provide the actual behavior.

class StripeProcessor extends PaymentProcessor {
  pay(amount: number): void {
    console.log(`Paid ${amount} with Stripe`);
  }
}

Abstract Properties

You can also require properties.

abstract class Shape {
  abstract name: string;

  abstract getArea(): number;
}

class Square extends Shape {
  name = "square";

  constructor(public size: number) {
    super();
  }

  getArea(): number {
    return this.size * this.size;
  }
}

Abstract Class vs Interface

Use an interface when you only need a contract.

Use an abstract class when you need a contract plus shared implementation.

abstract class BaseService {
  protected log(message: string) {
    console.log(`[Service] ${message}`);
  }

  abstract run(): void;
}

Child classes get the shared log method.


Quick Recap

  • Abstract classes cannot be instantiated directly.
  • They are meant to be extended.
  • Abstract methods and properties must be implemented by child classes.
  • Abstract classes can include shared concrete methods.
  • Use them when subclasses need common behavior.

Next up, we will learn Static Members →.