Sobes.tech
Middle
13

Какие типы есть в TypeScript, которых нет в JavaScript? Расскажи про utility types.

Компании, где спрашивали
SimbirsoftSimbirsoft

Ответ от нейросети

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 помогают писать более гибкий и выразительный код.