Расширенные возможности классов
Изучите абстрактные классы, модификаторы доступа и статические члены, чтобы писать чистый, модульный и объектно-ориентированный код на TypeScript
«Расширенные возможности классов» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 3 уроков всего.
Введение в расширенные возможности классов
Введение в расширенные возможности классов
TypeScript предлагает несколько расширенных возможностей классов, которые помогают писать модульный, масштабируемый и удобный в сопровождении объектно-ориентированный код.
В этом уроке вы узнаете о модификаторах доступа, абстрактных классах, статических членах и других возможностях.

Обзор расширенных возможностей классов
Введение в расширенные возможности классов
TypeScript предлагает несколько расширенных возможностей классов, которые помогают писать модульный, масштабируемый и удобный в сопровождении объектно-ориентированный код.
В этом уроке вы узнаете о модификаторах доступа, абстрактных классах, статических членах и других возможностях.

Модификаторы доступа
Модификаторы доступа
TypeScript предоставляет три модификатора доступа для управления видимостью членов класса:
public: доступен отовсюду (по умолчанию).private: доступен только внутри класса.protected: доступен внутри класса и его подклассов.
class Person {
public name: string;
private age: number;
protected role: string;
constructor(name: string, age: number, role: string) {
this.name = name;
this.age = age;
this.role = role;
}
}
class Employee extends Person {
getRole(): string {
return this.role; // Accessible because it's protected
}
}Абстрактные классы
Абстрактные классы
Абстрактные классы используются как шаблоны для других классов. Их нельзя напрямую создать, и они могут содержать абстрактные методы.
abstract class Shape {
abstract getArea(): number;
}
class Circle extends Shape {
constructor(public radius: number) {
super();
}
getArea(): number {
return Math.PI * this.radius ** 2;
}
}
const circle = new Circle(5);
console.log(circle.getArea()); // 78.54Статические члены
Статические члены
Статические члены принадлежат самому классу, а не отдельному экземпляру класса. Доступ к ним осуществляется по имени класса.
class MathUtils {
static PI = 3.14;
static calculateCircleArea(radius: number): number {
return this.PI * radius ** 2;
}
}
console.log(MathUtils.PI); // 3.14
console.log(MathUtils.calculateCircleArea(5)); // 78.5Геттеры и сеттеры
Геттеры и сеттеры
Геттеры и сеттеры позволяют управлять способом доступа к свойствам класса и их изменения.
class Person {
private _name: string;
constructor(name: string) {
this._name = name;
}
get name(): string {
return this._name;
}
set name(newName: string) {
this._name = newName;
}
}
const person = new Person('Alice');
console.log(person.name); // Alice
person.name = 'Bob';
console.log(person.name); // BobСвойства только для чтения
Свойства только для чтения
Модификатор readonly гарантирует, что свойство можно задать только во время инициализации и нельзя изменить позже.
class Vehicle {
readonly make: string;
constructor(make: string) {
this.make = make;
}
}
const car = new Vehicle('Toyota');
console.log(car.make); // Toyota
// car.make = 'Honda'; // Error: Cannot assign to 'make' because it is a read-only property.Закрытые и защищённые конструкторы
Закрытые и защищённые конструкторы
Классы могут иметь закрытые или защищённые конструкторы, чтобы управлять тем, как и где создаются их экземпляры.
class Singleton {
private static instance: Singleton;
private constructor() {}
static getInstance(): Singleton {
if (!this.instance) {
this.instance = new Singleton();
}
return this.instance;
}
}
const singleton = Singleton.getInstance();
console.log(singleton);Практическое задание
Практическое задание
Создайте класс с protected-конструктором и расширьте его в подклассе. Добавьте методы для доступа к защищённым свойствам в подклассе.
Поздравляем!
Поздравляем!
Вы изучили расширенные возможности классов: модификаторы доступа, абстрактные классы, статические элементы и многое другое. Потренируйтесь применять эти концепции, чтобы писать чистый и эффективный объектно-ориентированный код на TypeScript!

Часто задаваемые вопросы
Урок «Расширенные возможности классов» бесплатный?
Да — полный текст урока «Расширенные возможности классов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Расширенные возможности классов»?
Изучите абстрактные классы, модификаторы доступа и статические члены, чтобы писать чистый, модульный и объектно-ориентированный код на TypeScript Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.
Сколько времени занимает урок «Расширенные возможности классов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Продвинутое сужение типов
- Расширенные возможности классов
- Условные типы