Middle
13
Какие типы есть в TypeScript, которых нет в JavaScript? Расскажи про utility types.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
TypeScript расширяет JavaScript, добавляя статическую типизацию и новые типы, которых в JS нет. Основные из них:
- any — универсальный тип, отключающий проверку типов.
- unknown — тип, который может быть любым, но требует проверки перед использованием.
- never — тип для значений, которые никогда не встречаются (например, функция, которая всегда выбрасывает ошибку).
- tuple — фиксированный по длине массив с элементами разных типов.
- enum — перечисления для именованных констант.
- void — для функций, которые ничего не возвращают.
Кроме того, TypeScript поддерживает интерфейсы и типы-объединения (union types), пересечения (intersection types), литеральные типы и др.
Utility types — это встроенные обобщённые типы, которые помогают трансформировать другие типы. Например:
Partial<T>— делает все свойства типа T необязательными.Required<T>— делает все свойства обязательными.Readonly<T>— делает все свойства только для чтения.Pick<T, K>— выбирает подмножество свойств K из типа T.Omit<T, K>— исключает свойства K из типа T.Record<K, T>— создаёт тип объекта с ключами K и значениями T.
Пример использования Partial:
interface User {
id: number;
name: string;
age: number;
}
function updateUser(user: User, updates: Partial<User>) {
return { ...user, ...updates };
}
const user = { id: 1, name: 'Alice', age: 30 };
const updatedUser = updateUser(user, { age: 31 });
Таким образом, utility types помогают писать более гибкий и выразительный код.