Sobes.tech
Middle
33

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;