Что такое Generic Union

Ответ

Generic Union - это комбинация дженериков (обобщённых типов) и объединений (union types) в TypeScript. Позволяет создавать гибкие типы, которые могут работать с несколькими типами данных.

Пример:

type Result<T extends string | number> = {
  data: T;
  status: 'success' | 'error';
};

const numResult: Result<number> = { data: 42, status: 'success' };
const strResult: Result<string> = { data: 'hello', status: 'error' };

Здесь T может быть либо string, либо number, а status - union из двух строковых литералов. Это даёт строгую типизацию с сохранением гибкости.

Ответ 18+ 🔞

А, слушай, это ж про дженерики с объединениями в TypeScript! Ну, типа, когда ты берёшь обобщённые типы и скрещиваешь их с этой... как её... union-хуйней, чтобы получить что-то гибкое, но при этом чтоб компилятор не орал как резаный.

Вот смотри, пример, чтоб понятно было, а то я сам с первого раза нихуя не въехал:

type Result<T extends string | number> = {
  data: T;
  status: 'success' | 'error';
};

const numResult: Result<number> = { data: 42, status: 'success' };
const strResult: Result<string> = { data: 'hello', status: 'error' };

Видишь, в чём прикол? Этот T — он как бы шаблонная переменная, но мы его ограничили: "чувак, ты можешь быть либо строкой, либо числом, и ни хуя больше". А status — это вообще отдельная песня, union из двух конкретных строк, типа "вот эти два варианта, и точка, ебать тебя в сраку".

Получается строгая типизация, но при этом ты не заперт в одном типе как дурак. Можно и так, и эдак. Красота, ёпта!