TypeScript: классы

Назад | Учебник TypeScript | Вперёд

JavaScript использует прототипно-ориентированное программирование. В TypeScript всё более строго. Мы можем создавать строгие описания классов и создавать экземпляры классов, подчиняющиеся этому описанию.

Вы уже видели объявление классов в статье про первую программу на TypeScript. Ниже приведён пример простого класса:

Поддерживается иерархия классов и наследование:

В этом примере мы объявили две переменные: a и b. Обе переменные имеют тип Monster. Первую переменную мы инициализировали экземпляром класса Monster, а вторую переменную инициализировали экземпляром класса Goblin. Теперь переменная b имеет тип Monster, но ссылается не на экземпляр Monster, а на экземпляр его наследника Goblin.

Класс Goblin наследует от Monster поле name и метод getName, но метод getName он переопределяет, поэтому при вызове getName у b будет вызван не метод класса Monster, а метод класса Goblin.

TypeScript поддерживает модификаторы доступа: private, protected и public.

Модификатор доступа private делает член класса доступным только внутри этого класса:

Объявив поле с модификаторм private мы можем создать для доступа к нему getter-ы и setter-ы:

Внимание! Для поддержки getter-ов и setter-ов нужно компилировать с поддержкой ES5:

Модификатор доступа protected позволяет получить доступ к полю только из этого класса и его наследников:

Модификатор доступа public указывать не обязательно, он используется по умолчанию. Он позволяет обращаться к полю абсолютно всем:

Модификатор readonly позволяет создать поля, значения которых нельзя менять. Они должны быть обязательно инициализированы при объявлении.

Модификатор readonly можно указывать у параметро конструкторов. Тогда автоматически создаётся поле с именем, совпадающем с именем параметра, а внутри конструктора оно инициализируется значением с этого readonly параметра:

Можно создавать статические поля с помощью ключевого поля static. Статические поля принадлежат не экземпляру класса, а всему классу. У всех экземпляров класса всегда одно и то же общее значение поля с модификатором static. Обращаться к статическому полю нужно не через имя экземпляра класса, а через имя класса:

Можно создавать абстрактные классы. Абстактный класс — это класс, помеченный abstract. Нельзя создавать экземпляры абстрактных классов, они используются как базовые классы в иерархии. В абстрактные классы помещают общие методы, поля и объявления абстракнтых методов, которые должны реализовать дочерние классы:

Если вы до этого учили классы в языке программирования Java, то сказанное в этой статье должно быть для вас более чем понятно.

Назад | Учебник TypeScript | Вперёд


Поделиться:

Добавить комментарий

Ваш e-mail не будет опубликован.