TypeScript中的类
1. 类的基本语法
在 TypeScript 中,使用 class 关键字来定义类。以下是一个简单的类的示例:
class Person {
private name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
}
在上面的例子中,Person 类具有一个私有成员 name 和一个公共成员 age,并且定义了一个构造函数 constructor 和一个 greet 方法。
2. 成员修饰符
TypeScript 提供了几种成员修饰符,用于控制类成员的可访问性:
public:默认修饰符,表示成员可以在类的内部和外部访问。private:表示成员只能在类的内部访问。protected:表示成员可以在类的内部和派生类中访问。
例如,我们可以将 name 成员改为 private,并在 greet 方法中访问它:
class Person {
private name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
}
3. 继承
TypeScript 支持类的继承,通过使用 extends 关键字来实现。子类可以继承父类的属性和方法,并且可以覆盖父类的方法或添加新的方法。
以下是一个继承的示例:
class Student extends Person {
studentId: string;
constructor(name: string, age: number, studentId: string) {
super(name, age);
this.studentId = studentId;
}
study() {
console.log(`${this.name} is studying.`);
}
}
在上面的例子中,Student 类继承自 Person 类,并添加了一个新的成员 studentId 和一个 study 方法。
4. 多态
多态是面向对象编程的一个重要概念,它允许不同的对象对同一个方法做出不同的响应。在 TypeScript
中,我们可以使用类的继承和方法的重写来实现多态。
以下是一个多态的示例:
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
makeSound() {
console.log("Generic animal sound.");
}
}
class Dog extends Animal {
makeSound() {
console.log("Woof!");
}
}
class Cat extends Animal {
makeSound() {
console.log("Meow!");
}
}
function playWithAnimal(animal: Animal) {
animal.makeSound();
}
const dog = new Dog("Buddy");
const cat = new Cat("Whiskers");
playWithAnimal(dog); // 输出 "Woof!"
playWithAnimal(cat); // 输出 "Meow!"
在上面的例子中,Animal 类定义了一个 makeSound 方法,而 Dog 和 Cat 类分别重写了这个方法。通过将不同的对象传递给 playWithAnimal 函数,我们可以实现多态,使得每个对象都发出不同的声音。
5. 提升代码可维护性和可扩展性
使用类的概念可以提高代码的可维护性和可扩展性。通过将相关的数据和方法封装在一个类中,可以提高代码的组织性和可读性。类的继承和多态让我们能够构建更具灵活性的代码结构,使得代码更容易扩展和重用。
此外,TypeScript 还提供了接口(interface)的概念,可以进一步定义类的结构和行为。接口可以用于约束类的实现,使得代码更加规范和可靠。

浙公网安备 33010602011771号