TypeScript 枚举
TypeScript 接口 

TypeScript 类

在 TypeScript 中,类(class)是一种面向对象的重要概念,它允许你定义具有属性和方法的复合数据类型。下面我们来看一些 TypeScript 类的基本用法和特性。

定义类

类一般包含构造函数、构造函数(constructor)、方法。

class Person {
    // 属性
    name: string;
    age: number;

    // 构造函数
    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    // 方法
    sayHello() {
        console.log(`Hello, my name is ${this.name},I am ${this.age} years old.`);
    }
}

在上述例子中,包含name、age两个属性,一个方法sayHello()。


创建实例

要创建类的实例,使用 new 关键字加上类名和构造函数的参数:

let person1 = new Person('Alice', 30);
let person2 = new Person('Bob', 25);
person1.sayHello();  // 输出: Hello, my name is Jerry,I am 24 years old.
person2.sayHello();  // 输出: Hello, my name is Tom,I am 21 years old.

类的继承

类支持继承,一个类可以从另一个类继承属性和方法。可以使用 extends 关键字来实现继承。

class Student extends Person {
    school: string;
    constructor(name: string, age: number, school: string) {
        super(name, age);  // 调用父类的构造函数
        this.school = school;
    }
    sayHello() {
        console.log(`${this.name} is studying at ${this.school}.`);
    }
}
let person3 = new Student('Susan', 21, "Peking University");
person3.sayHello(); // 输出:Susan is studying at Peking University.

抽象类

抽象类(abstract class)不能直接被实例化,它们被用作其他类的基类。抽象类可以包含抽象方法,这些方法在派生类中必须被实现。使用 abstract 关键字标记抽象类和抽象方法:

abstract class Animal {
    abstract scream(): void;
}
class Cat extends Animal {
    scream(): void {
        console.log('miao!');
    }
}

let animal = new Cat();
animal.scream(); // miao


访问修饰符

TypeScript 中支持访问修饰符(access modifiers)来限制类的属性和方法的访问权限:

  • public(默认):可以在类的内部和外部访问。

  • private:只能在类的内部访问。

  • protected:可以在类的内部和派生类中访问。