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:可以在类的内部和派生类中访问。