В этом руководстве вы узнаете о статических свойствах и методах 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. Он имеет PI, E, … статические свойства и abs(), round() и т.д., статические методы.
- Статические свойства и методы TypeScript являются общими для всех экземпляров класса.
- Используйте ключевое слово
staticперед свойством или методом, чтобы сделать его статическим.
