跳到主要内容

TypeScript 静态方法和属性

摘要:在本教程中,你将了解 TypeScript 静态属性和方法。

静态属性

与实例属性不同,静态属性在类的所有实例之间共享。

要声明静态属性,请使用 static 关键字。 要访问静态属性,请使用 className.propertyName 语法。 例如:

class Employee {
static headcount: number = 0;

constructor(
private firstName: string,
private lastName: string,
private jobTitle: string) {

Employee.headcount++;
}
}

在此示例中,headcount 是初始化为零的静态属性。 每当创建一个新对象时,它的值就会增加 1。

下面创建两个 Employee 对象并显示 headcount 属性的值。 它按预期返回 2。

let john = new Employee('John', 'Doe', 'Front-end Developer');
let jane = new Employee('Jane', 'Doe', 'Back-end Developer');

console.log(Employee.headcount); // 2

静态方法

与静态属性类似,静态方法也在类的实例之间共享。 要声明静态方法,请在方法名称前使用 static 关键字。 例如:

class Employee {
private static headcount: number = 0;

constructor(
private firstName: string,
private lastName: string,
private jobTitle: string) {

Employee.headcount++;
}

public static getHeadcount() {
return Employee.headcount;
}
}

在这个例子中:

  • 首先,将 headcount 静态属性的访问修饰符从 public 更改为 private,以便在不创建新的 Employee 对象的情况下无法在类外部更改其值。
  • 其次,添加 getHeadcount() 静态方法,该方法返回 headcount 静态属性的值。

要调用静态方法,请使用 className.staticMethod() 语法。 例如:

let john = new Employee('John', 'Doe', 'Front-end Developer');
let jane = new Employee('Jane', 'Doe', 'Back-end Developer');

console.log(Employee.getHeadcount); // 2

在实践中,你会发现一个库包含许多静态属性和方法,例如 Math 对象。 它有 PIE 等静态属性和 abs()round() 等静态方法。

概括

  • 静态属性和方法由类的所有实例共享。
  • 在属性或方法之前使用 static 关键字使其静态。