Middle
TypeScriptben típusokat az interface kulcsszóval és a type kulcsszóval lehet deklarálni. Tudnál röviden mondani, mi a különbség?
sobes.tech MI
Válasz az MI-től
В TypeScript interface и type часто используются для описания типов объектов, но между ними есть отличия:
-
interface предназначен для описания структуры объектов и поддерживает декларативное расширение (declaration merging). Это значит, что можно объявить один и тот же интерфейс несколько раз, и TypeScript объединит их.
-
type — это более общий инструмент, который позволяет создавать алиасы для любых типов: примитивов, объединений, пересечений, кортежей и т.д. Однако
typeне поддерживает декларативное расширение.
Пример:
interface User {
name: string;
}
interface User {
age: number;
}
// Теперь User имеет оба свойства: name и age
// С type так сделать нельзя:
type UserType = {
name: string;
};
// type UserType = {
// age: number;
// }; // Ошибка: Duplicate identifier 'UserType'
В целом, если нужно описать структуру объекта и планируется расширение, лучше использовать interface. Если нужен более сложный тип (например, объединение или кортеж), или алиас, то type.