Abstract classes share implementation while requiring subclasses to fill in missing behavior.

Abstract Classes

abstract.ts
abstract class Shape {
    abstract area(): number;

    describe(): string {
        return `area=${this.area()}`;
    }
}

class Square extends Shape {
    side: number;

    constructor(side: number) {
        super();
        this.side = side;
    }

    area(): number {
        return this.side * this.side;
    }
}

const side: number = ;
const shape: Shape = new Square(side);

console.log(shape.describe());
abstract class Shape {
    abstract area(): number;

    describe(): string {
        return `area=${this.area()}`;
    }
}

class Square extends Shape {
    side: number;

    constructor(side: number) {
        super();
        this.side = side;
    }

    area(): number {
        return this.side * this.side;
    }
}

const side: number = ;
const shape: Shape = new Square(side);

console.log(shape.describe());
abstract class Shape {
    abstract area(): number;

    describe(): string {
        return `area=${this.area()}`;
    }
}

class Square extends Shape {
    side: number;

    constructor(side: number) {
        super();
        this.side = side;
    }

    area(): number {
        return this.side * this.side;
    }
}

const side: number = ;
const shape: Shape = new Square(side);

console.log(shape.describe());
abstract class An abstract class can contain shared code and abstract methods that subclasses must implement.