Sobes.tech
Back to questions
Junior — Middle
106

Что отличает интерфейсы от классов в TypeScript и в каких ситуациях используют каждый из них?

Answer from AI

sobes.tech AI

В TypeScript интерфейсы и классы имеют разные назначения и особенности:

  • Интерфейсы описывают структуру данных — какие свойства и методы должен иметь объект. Они не содержат реализацию, а служат для типизации и контрактов.
  • Классы — это шаблоны для создания объектов с реализацией методов и состоянием (свойствами). Классы могут содержать конструкторы, методы с телом, модификаторы доступа.

Когда использовать:

  • Интерфейсы применяют для описания формата данных, особенно когда важна только структура, например, для параметров функций или объектов.
  • Классы используют, когда нужна реализация логики, создание экземпляров с поведением, наследование.

Пример интерфейса:

interface IUser {
  id: number;
  name: string;
}

Пример класса:

class User implements IUser {
  constructor(public id: number, public name: string) {}
  greet() {
    console.log(`Hello, ${this.name}`);
  }
}

Таким образом, интерфейсы — это контракт, а классы — конкретная реализация с поведением.