Sobes.tech
Назад к вопросам
Middle+
1

Для чего используются дженерики (Generics) в TypeScript? Как ограничить дженерик определёнными типами? Что такое type narrowing и как оно реализуется?

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

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

sobes.tech AI

Дженерики в TypeScript позволяют создавать компоненты, функции и классы, которые работают с разными типами данных, сохраняя при этом типовую безопасность. Это повышает переиспользуемость кода и предотвращает ошибки типов.

Чтобы ограничить дженерик определёнными типами, используют ключевое слово extends. Например:

function merge<T extends object, U extends object>(obj1: T, obj2: U): T & U {
  return {...obj1, ...obj2};
}

Здесь T и U ограничены типом object, что не позволит передать, например, примитивы.

Type narrowing — это механизм сужения типа переменной в процессе выполнения кода, благодаря проверкам типа. TypeScript анализирует условия и уточняет тип, что позволяет безопасно работать с переменной.

Пример реализации type narrowing:

type Fish = { swim: () => void };
type Bird = { fly: () => void };

function move(animal: Fish | Bird) {
  if ('swim' in animal) {
    animal.swim(); // TypeScript знает, что animal — Fish
  } else {
    animal.fly(); // Здесь animal — Bird
  }
}

Таким образом, дженерики обеспечивают гибкость и безопасность типов, а type narrowing помогает корректно работать с объединёнными типами.