TypeScriptでextendsを使用した継承の実装方法

TypeScriptの継承の実装方法

TypeScriptでの継承は、クラスの継承に基づいています。
基本的な構文はextendsキーワードを使用します。
以下に簡単な例を示します。

class Animal {
    name: string;

    constructor(name: string) {
        this.name = name;
    }

    makeSound() {
        console.log("Some generic sound");
    }
}

class Dog extends Animal {
    constructor(name: string) {
        super(name); // 親クラスのコンストラクタを呼び出します
    }

    makeSound() {
        console.log("Woof! Woof!");
    }
}

const dog = new Dog("Buddy");
dog.makeSound(); // "Woof! Woof!"

この例では、Animalクラスがあり、それを継承するDogクラスを作成しています。
DogクラスはAnimalクラスの機能を受け継ぎながら、独自のmakeSoundメソッドを持っています。

ポイント

1. extendsキーワード:
DogクラスがAnimalクラスを継承するために使用されます。

2. superキーワード:
親クラスのコンストラクタを呼び出すために使用されます。
superを使用して、親クラスのプロパティやメソッドにアクセスできます。

3. メソッドのオーバーライド:
DogクラスはAnimalクラスのmakeSoundメソッドをオーバーライドしています。

複数のクラスの継承

TypeScriptは多重継承をサポートしていませんが、インターフェースを使用して複数のタイプを実装することができます。

interface CanBark {
    bark(): void;
}

interface CanRun {
    run(): void;
}

class Dog extends Animal implements CanBark, CanRun {
    constructor(name: string) {
        super(name);
    }

    makeSound() {
        console.log("Woof! Woof!");
    }

    bark() {
        console.log("Barking");
    }

    run() {
        console.log("Running");
    }
}

const dog = new Dog("Buddy");
dog.bark(); // "Barking"
dog.run();  // "Running"

この例では、DogクラスはAnimalクラスを継承しながら、CanBarkとCanRunインターフェースを実装しています。
これにより、複数のインターフェースのメソッドを持つことができます。

以上が、TypeScriptでの継承の基本的な実装方法です。