Sobes.tech
Middle
34

Фарқи байни interface ва type дар TypeScript чист? Интерфейсҳо барои чӣ лозиманд агар намудҳо мавҷуд бошанд ва баръакс?

Ширкатҳо дар куҷо пурсиданд
Evrone

Ҷавоб аз AI

sobes.tech AI

В TypeScript и interface, и type используются для описания формата данных, но между ними есть важные отличия.

  • interface предназначен для описания структуры объектов и может быть расширен (extends) или реализован (implements) классами. Интерфейсы поддерживают декларативное слияние (declaration merging), то есть можно объявить интерфейс с одним именем несколько раз, и TypeScript объединит их.

  • type — это более общий инструмент, который позволяет создавать алиасы для любых типов: примитивов, объединений, пересечений, кортежей и т.д. Типы нельзя расширять или реализовывать, и они не поддерживают декларативное слияние.

Зачем нужны оба?

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

Пример:

interface IUser {
  name: string;
}

interface IUser {
  age: number; // интерфейсы сливаются
}

const user: IUser = { name: "Alice", age: 30 };

// type так не сработает
// type User = { name: string };
// type User = { age: number }; // ошибка: Duplicate identifier 'User'

// type позволяет объединения

type ID = string | number;