TypeScript 静态方法和属性

摘要:在本教程中,您将学习 TypeScript 静态属性和方法。

静态属性

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

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

class Employee {
    static headcount: number = 0;

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

        Employee.headcount++;
    }
}Code language: TypeScript (typescript)

在此示例中,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
Code language: TypeScript (typescript)

静态方法

与静态属性类似,静态方法也在类的实例之间共享。要声明静态方法,请在方法名前使用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;
    }
}Code language: TypeScript (typescript)

在此示例中

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

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

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

console.log(Employee.getHeadcount); // 2Code language: TypeScript (typescript)

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

总结

  • 静态属性和方法由类的所有实例共享。
  • 在属性或方法前使用static关键字使其成为静态的。
本教程对您有帮助吗?