1. 继承

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

class Snake extends Animal {
    constructor(name: string) { super(name); }      // super
    move(distanceInMeters = 5) {
        console.log("Slithering...");
        super.move(distanceInMeters);
    }
}

class Horse extends Animal {
    constructor(name: string) { super(name); }
    move(distanceInMeters = 45) {
        console.log("Galloping...");
        super.move(distanceInMeters);
    }
}

如果子类包含了构造函数,那么它必须调用 super(), 它会执行基类的构造函数。并且在构造函数访问this属性之前,一定要调用 super();

2. 公共,私有与受保护的修饰符

在 typescript 里,成员都默认为 public

private

protected

protected 与 privated 类似,但是 protected 成员在子类中可以访问。

3. 静态属性

4. 抽象类

抽象类作为其它派生类的基类使用,不会直接被实例化。

使用 abstract 关键字定义抽象类和在抽象类内部定义抽象方法

5. 构造函数

在TypeScript中声明一个类的时候,实际上声明了很多东西,比如, 类的实例的类型

除了类的实例的类型,我们可能还关注,类的类型

即通过 typeof 操作符,可以得到类的类型。

5. 把类当接口使用

类定义会创建两个东西: 类的实例类型和一个构造函数,那么实例类型就可以当做接口去使用

Last updated

Was this helpful?