返回

重拾TypeScript中的类、继承、访问器和构造器

前端

引言

TypeScript作为一门流行的编程语言,继承了JavaScript的特性,同时还增加了静态类型检查和面向对象编程等特性。本文将探讨TypeScript中的类、继承、访问器和构造器等概念,并通过代码示例来演示如何使用这些特性。

类是TypeScript中用于封装数据和行为的结构。类可以定义属性和方法,并且可以创建多个类的实例。要定义一个类,可以使用class,如下所示:

class Person {
  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 am ${this.age} years old.`);
  }
}

这个类定义了一个名为Person的类,其中包含两个属性nameage,以及一个方法greet()。要创建Person类的实例,可以使用new关键字,如下所示:

const person1 = new Person('John', 30);
person1.greet(); // Hello, my name is John and I am 30 years old.

继承

继承是TypeScript中的一种机制,允许一个类从另一个类继承属性和方法。要实现继承,可以使用extends关键字,如下所示:

class Student extends Person {
  school: string;

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

  study() {
    console.log(`I am studying at ${this.school}.`);
  }
}

这个类定义了一个名为Student的类,该类继承自Person类。Student类包含一个新的属性school和一个新的方法study()。要创建Student类的实例,可以使用new关键字,如下所示:

const student1 = new Student('Jane', 20, 'MIT');
student1.greet(); // Hello, my name is Jane and I am 20 years old.
student1.study(); // I am studying at MIT.

访问器

访问器是TypeScript中的一种机制,允许通过方法来访问类的私有属性。要定义访问器,可以使用getset关键字,如下所示:

class Person {
  private _name: string;

  get name(): string {
    return this._name;
  }

  set name(name: string) {
    this._name = name;
  }
}

在这个类中,属性_name是私有的,不能直接访问。但是,可以通过访问器name来访问该属性。要获取属性_name的值,可以使用get访问器,如下所示:

const person1 = new Person();
const name = person1.name;

要设置属性_name的值,可以使用set访问器,如下所示:

const person1 = new Person();
person1.name = 'John';

构造器

构造器是TypeScript中的一种特殊方法,用于在创建类的实例时初始化类的属性。构造器可以使用constructor关键字定义,如下所示:

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

在这个类中,构造器接收两个参数nameage,并使用这些参数来初始化类的属性nameage

结论

本文探讨了TypeScript中的类、继承、访问器和构造器等概念。这些概念是TypeScript面向对象编程的基础,掌握了这些概念,便可以编写出更复杂的TypeScript程序。