Sobes.tech
Middle

Type және interface арасындағы айырмашылық қандай?

sobes.tech AI

AI-дан жауап

TypeScript-те type және interface жиі объектілердің типтерін сипаттау үшін пайдаланылады, бірақ олардың арасында айырмашылықтар бар:

  • Кеңейтілімділік:

    • interface кеңейтілуі (extends) және біріктіруі (declaration merging) мүмкін, яғни бірнеше бір атаумен жарияланымдар біріктіріледі.
    • type declaration merging-ті қолдамайды, бірақ типтердің бірігуі мен қиылысуын жасауға болады.
  • Мүмкіндіктері:

    • type әлдеқайда әмбебап — ол тек объектілерді ғана емес, сонымен қатар бірігулер, қиылысулар, примитивтер, кортеждер және т.б. сипаттауға мүмкіндік береді.
    • interface тек объектілер мен кластардың құрылымдарын сипаттау үшін арналған.
  • Синтаксисі және таңдау:

    • interface жиі жария API және кластарды сипаттау үшін артықшылығы бар, себебі декларативті кеңейтуге мүмкіндік береді.
    • type күрделі типтер үшін ыңғайлы, мысалы, бірігулер немесе mapped types.

Мысал:

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;