0Pricing
TypeScript Academy · Урок

Расширенные возможности классов

Изучите абстрактные классы, модификаторы доступа и статические члены, чтобы писать чистый, модульный и объектно-ориентированный код на TypeScript

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

Введение в расширенные возможности классов

Введение в расширенные возможности классов

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

В этом уроке вы узнаете о модификаторах доступа, абстрактных классах, статических членах и других возможностях.

Расширенные возможности классов — иллюстрация 1

Обзор расширенных возможностей классов

Введение в расширенные возможности классов

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

В этом уроке вы узнаете о модификаторах доступа, абстрактных классах, статических членах и других возможностях.

Расширенные возможности классов — иллюстрация 2

Модификаторы доступа

Модификаторы доступа

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!

Расширенные возможности классов — иллюстрация 11

Часто задаваемые вопросы

Урок «Расширенные возможности классов» бесплатный?

Да — полный текст урока «Расширенные возможности классов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Продвинутое сужение типов
  2. Расширенные возможности классов
  3. Условные типы
← Назад к TypeScript Academy