Hack Frontend Community

Что делает implements в TypeScript?

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

Это означает, что класс должен реализовать все свойства и методы, описанные в интерфейсе. Иначе TypeScript выдаст ошибку на этапе компиляции.

Синтаксис

interface IAnimal {
  name: string;
  makeSound(): void;
}

class Dog implements IAnimal {
  name: string;

  constructor(name: string) {
    this.name = name;
  }

  makeSound() {
    console.log("Woof!");
  }
}

Что происходит?

  • Класс Dog обязан реализовать все свойства и методы интерфейса IAnimal.
  • Если хотя бы одно будет отсутствовать — TypeScript покажет ошибку.

Пример ошибки

interface Person {
  name: string;
  age: number;
}

class User implements Person {
  name: string;
  // Ошибка: Property 'age' is missing
}

implements с несколькими интерфейсами

Можно реализовать несколько интерфейсов через запятую:

interface A {
  a(): void;
}

interface B {
  b(): void;
}

class C implements A, B {
  a() {
    console.log("A");
  }

  b() {
    console.log("B");
  }
}

Зачем использовать implements?

  • Для контроля структуры класса
  • Для документирования API: видно, что класс должен поддерживать
  • Для гарантий соответствия архитектуре
  • Для модульности и повторного использования: один интерфейс — много реализаций

Важно:

implements работает только на уровне типов. В скомпилированном JavaScript нет интерфейсов.