返回

TypeScript中Class类使用指南

前端

TypeScript中Class类使用

在TypeScript中,Class是一个构造函数,它可以用来创建一个对象实例。Class可以具有属性和方法,属性是对象的特征,方法是对象的函数。

为了定义一个Class,我们需要使用class,然后跟上Class的名称。例如,以下代码定义了一个名为"Person"的Class:

class Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  speak() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

我们也可以使用继承来创建子Class。子Class继承了父Class的所有属性和方法,并且还可以添加自己的属性和方法。例如,以下代码定义了一个名为"Student"的子Class,它继承了"Person" Class:

class Student extends Person {
  studentId: number;

  constructor(name: string, age: number, studentId: number) {
    super(name, age);
    this.studentId = studentId;
  }

  study() {
    console.log(`I am studying.`);
  }
}

多态是指对象能够根据其类型执行不同的操作。例如,如果我们有一个"Animal" Class,它具有一个名为"speak()"的方法。那么,我们可以创建一个"Dog" Class和一个"Cat" Class,它们都继承了"Animal" Class。然后,我们可以使用相同的"speak()"方法来让狗和猫发出不同的声音。

class Animal {
  speak() {
    console.log(`I am an animal.`);
  }
}

class Dog extends Animal {
  speak() {
    console.log(`Woof!`);
  }
}

class Cat extends Animal {
  speak() {
    console.log(`Meow!`);
  }
}

const dog = new Dog();
const cat = new Cat();

dog.speak(); // 输出:Woof!
cat.speak(); // 输出:Meow!

封装是指将对象的属性和方法隐藏起来,只对外暴露必要的接口。这可以提高代码的可维护性和安全性。例如,以下代码将"Person" Class的属性和方法都设置为私有的,然后通过"get"和"set"方法来访问和修改这些属性:

class Person {
  private name: string;
  private age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  getName(): string {
    return this.name;
  }

  setName(name: string) {
    this.name = name;
  }

  getAge(): number {
    return this.age;
  }

  setAge(age: number) {
    this.age = age;
  }
}

const person = new Person("John Doe", 30);

console.log(person.getName()); // 输出:John Doe
console.log(person.getAge()); // 输出:30

person.setName("Jane Doe");
person.setAge(31);

console.log(person.getName()); // 输出:Jane Doe
console.log(person.getAge()); // 输出:31

Class类是TypeScript中面向对象编程的基础,它允许我们创建对象并对对象进行操作。通过使用继承、多态和封装,我们可以创建更加复杂的应用程序。