TypeScript 类


TypeScript中的类

TypeScript是一种开源的编程语言,它是JavaScript的一个超集,其添加了静态类型和其他一些面向对象的特性,包括类。

创建类

在TypeScript中,使用class关键字来创建类。类可以包含属性、方法和构造函数。下面是创建类的一些示例:

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} and I'm ${this.age} years old.`);
  }
}

在上面的示例中,我们创建了一个Person类,它具有两个属性nameage,一个构造函数和一个sayHello方法。构造函数使用this关键字来引用当前实例,并将传递进来的nameage分配给相应的属性。sayHello方法在控制台打印出一条问候语,其中使用类的属性。

实例化类

创建类后,我们需要使用new关键字来实例化类。下面是一个示例:

const john = new Person('John', 30);
john.sayHello(); // 输出 "Hello, my name is John and I'm 30 years old."

上面的代码创建了一个john实例,使用构造函数将name设置为John,将age设置为30。然后调用sayHello方法来打印问候语。

访问类的属性和方法

我们可以通过点号来访问类实例的属性和方法。例如:

const mary = new Person('Mary', 25);
console.log(mary.name);  // 输出 "Mary"
mary.sayHello(); // 输出 "Hello, my name is Mary and I'm 25 years old."

上面的代码创建了一个mary实例,然后使用点号访问name属性和sayHello方法。

继承类

在TypeScript中,可以使用extends关键字来继承类。下面是一个示例:

class Employee extends Person {
  jobTitle: string;
  constructor(name: string, age: number, jobTitle: string) {
    super(name, age);
    this.jobTitle = jobTitle;
  }
  introduce() {
    console.log(`Hello, my name is ${this.name}, I'm ${this.age} years old, and my job title is ${this.jobTitle}.`);
  }
}

在上面的示例中,我们定义了一个Employee类,继承了Person类。它新增了一个jobTitle属性,然后覆盖了Person类的构造函数,调用了父类super方法并为jobTitle赋值。然后它定义了一个新的introduce方法,打印出一个更详细的自我介绍。这个新的方法引用了从父类继承的nameage属性,以及它自己的jobTitle属性。

现在我们可以实例化一个Employee对象:

const jack = new Employee('Jack', 35, 'Manager');
jack.introduce(); // 输出 "Hello, my name is Jack, I'm 35 years old, and my job title is Manager."

总结

TypeScript中的类允许我们创建对象,并使用面向对象的方式封装属性和行为。我们可以使用构造函数来初始化对象的属性,使用点号来访问它们,并通过继承来扩展现有的类。这是TypeScript提供的一些最基本的面向对象的概念,可以帮助我们更好地组织和管理代码。