0Pricing
TypeScript Academy · Урок

Реализация интерфейсов с помощью классов

Закрепляйте структуру класса с помощью ключевого слова implements

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

Добро пожаловать

Ключевое слово `implements` гарантирует, что класс выполняет контракт интерфейса. TypeScript проверяет, что класс предоставляет все обязательные свойства и методы.

Базовая реализация

Укажите `implements InterfaceName` после имени класса. TypeScript выдаст ошибку, если отсутствует любой обязательный элемент.
interface Printable {
  print(): void;
}
class Document implements Printable {
  print() { console.log('Printing...'); }
}

Отсутствующие элементы вызывают ошибки

Если класс не реализует все обязательные элементы, TypeScript сообщает об ошибке в объявлении класса.
interface Serializable { serialize(): string; }
// Error: Class 'Broken' incorrectly implements interface 'Serializable'
// class Broken implements Serializable {}

Реализация нескольких интерфейсов

Класс может одновременно реализовать несколько интерфейсов, разделив их запятыми.
interface Flyable { fly(): void; }
interface Swimmable { swim(): void; }
class Duck implements Flyable, Swimmable {
  fly() { console.log('Flying'); }
  swim() { console.log('Swimming'); }
}

interface не предоставляет реализацию

Интерфейсы только описывают структуру. Класс предоставляет фактическую реализацию.

implements с необязательными элементами

Необязательные элементы интерфейса не нужно реализовывать. Класс может их предоставить, но это не обязательно.
interface Logger {
  log(msg: string): void;
  warn?(msg: string): void; // optional
}
class SimpleLogger implements Logger {
  log(msg: string) { console.log(msg); }
  // warn is not required
}

Интерфейс для внедрения зависимостей

Использование интерфейсов в качестве типов параметров конструктора позволяет применять внедрение зависимостей: можно передать любой класс, реализующий интерфейс.
interface Storage { save(data: string): void; }
class Service {
  constructor(private storage: Storage) {}
  run() { this.storage.save('data'); }
}
class LocalStorage implements Storage {
  save(data: string) { localStorage.setItem('key', data); }
}

Расширение и реализация

`extends` наследует от другого класса, то есть разделяет реализацию. `implements` только проверяет структуру — код не наследуется.

Класс, реализующий интерфейс и расширяющий класс

Класс может одновременно расширять базовый класс И реализовывать интерфейсы.
class Animal { breathe() { return 'breathing'; } }
interface Trainable { train(): void; }
class Dog extends Animal implements Trainable {
  train() { console.log('Sit!'); }
}

Реализация обобщённых интерфейсов

Класс может реализовать обобщённый интерфейс, указав аргумент типа.
interface Repository<T> {
  findById(id: number): T | null;
}
class UserRepo implements Repository<User> {
  findById(id: number): User | null {
    return null; // stub
  }
}

Типобезопасность implements

`implements` не добавляет поведения во время выполнения. Во время выполнения класс ничего не знает об интерфейсе. Это исключительно контракт на этапе компиляции.

Быстрая проверка

Что проверяет TypeScript, когда класс использует ключевое слово `implements`?

Итоги

`implements` гарантирует на этапе компиляции, что класс выполняет контракт интерфейса. Класс может реализовать несколько интерфейсов. Используйте интерфейсы для внедрения зависимостей, возможности тестирования и отделения поведения от реализации.

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

Урок «Реализация интерфейсов с помощью классов» бесплатный?

Да — полный текст урока «Реализация интерфейсов с помощью классов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Реализация интерфейсов с помощью классов»?

Закрепляйте структуру класса с помощью ключевого слова implements Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Реализация интерфейсов с помощью классов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Классы TypeScript и конструкторы
  2. Модификаторы public, private и protected
  3. Свойства readonly и свойства параметров
  4. Реализация интерфейсов с помощью классов
← Назад к TypeScript Academy