📜  如何从 TypeScript 中的子类调用基类构造函数?(1)

📅  最后修改于: 2023-12-03 15:23:47.005000             🧑  作者: Mango

如何从 TypeScript 中的子类调用基类构造函数?

在 TypeScript 中,我们可以使用继承创建子类。当我们需要在子类中访问基类中的属性和方法时,需要调用基类的构造函数。

1. 使用 super() 调用基类构造函数

可以使用 super() 函数来调用基类的构造函数,可以将参数传递给基类的构造函数。调用 super() 之后,就可以通过 this 访问基类的属性和方法。

以下示例是一个基类 Animal 和一个子类 Cat 的示例,演示了如何从子类中访问基类的构造函数。

class Animal {
    private name: string;
    constructor(name: string) {
        this.name = name;
    }
    public move(distance: number = 0) {
        console.log(`${this.name} moved ${distance}m.`);
    }
}

class Cat extends Animal {
    constructor(name: string) {
        super(name);
    }
    public makeSound() {
        console.log(`${this.name} says Meow!`);
    }
}

let cat = new Cat("Fluffy");
cat.move(10);
cat.makeSound();

输出:

Fluffy moved 10m.
Fluffy says Meow!
2. 用 super() 调用基类的静态方法

在子类中,我们也可以使用 super() 调用基类的静态方法。只需要使用 super 后跟一个点号和基类的方法名。

以下示例是一个基类 Human 和一个子类 Student 的示例,演示了如何从子类中访问基类的静态方法。

class Human {
    static talk() {
        console.log("I'm talking!");
    }
}

class Student extends Human {
    static talk() {
        super.talk();
        console.log("I'm studying!");
    }
}

Student.talk();

输出:

I'm talking!
I'm studying!
结论

在 TypeScript 中,可以使用 super() 函数来调用基类的构造函数和静态方法。这就允许我们在子类中访问基类中的属性和方法,使我们的代码更加灵活和易于维护。