В этом руководстве вы узнаете о статических свойствах и методах 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
перед свойством или методом, чтобы сделать его статическим.