Back to questions
Middle
3
Расскажи про типы данных в TypeScript, утилити типы, отличие типов от интерфейсов, наследование в них.
Companies where asked
RWB
Answer from AI
sobes.tech AI
В TypeScript есть несколько основных типов данных: примитивы (string, number, boolean, null, undefined, symbol, bigint), массивы, кортежи, enum, any, unknown, void, never и объекты.
Утилити типы — это встроенные типы, которые помогают трансформировать другие типы. Например:
Partial<T>— делает все свойства типа T необязательными.Readonly<T>— делает все свойства типа T только для чтения.Pick<T, K>— выбирает подмножество свойств из T.Omit<T, K>— исключает свойства из T.Record<K, T>— создает объект с ключами K и значениями T.
Отличие типов (type) от интерфейсов (interface):
- Интерфейсы предназначены для описания структуры объектов и могут быть расширены (наследованы) и объединены.
- Типы более универсальны, могут описывать не только объекты, но и объединения, пересечения, примитивы и т.д.
- Интерфейсы могут быть декларативно объединены (declaration merging), типы — нет.
Наследование:
- Интерфейсы наследуются с помощью ключевого слова
extends:
interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}
- Типы могут использовать пересечения для объединения:
type Animal = { name: string };
type Dog = Animal & { breed: string };
Таким образом, интерфейсы удобны для описания объектов и их расширения, а типы — более гибкие и мощные для сложных комбинаций типов.