Как дописать typeof всем типам из юнион типа?

Для дописывания оператора typeof ко всем типам юнион типа в TypeScript вы можете воспользоваться манипуляциями типами.

Для начала определяется само создание типа, у вас это юнион тип:

type MyUnionType = string | number | boolean;

Затем, используя манипуляции типами, можно применить ключевое слово typeof ко всем типам внутри этого юнион типа. Для этого мы можем использовать инструмент "mapped types", который позволяет изменять типы в соответствии с некоторыми заданными правилами.

Применим "mapped types" для добавления typeof ко всем типам в нашем юнион типе:

type AddTypeOf<T> = {
  [K in keyof T]: typeof T[K];
};

type MyUnionTypeWithtypeof = AddTypeOf<MyUnionType>;
// Результат: { [x: number]: string; [x: string]: number; } & { [x: number]: boolean; [x: string]: boolean; } & { [x: number]: number; [x: string]: number; }

В этом примере мы определили новый тип AddTypeOf<T>, который создает новый тип, идентичный исходному типу T, но с добавленным typeof ко всем типам свойств. Затем мы использовали keyof T, чтобы перебрать все свойства в T, и применили оператор typeof к каждому свойству.

Обратите внимание, что получившийся тип MyUnionTypeWithtypeof - это интерсекция всех типов после применения typeof, то есть все свойства и их типы из исходного юнион типа соединились в один тип.

Теперь, когда вы применили добавление typeof ко всем типам в вашем юнион типе, вы можете использовать этот новый тип MyUnionTypeWithtypeof в своем коде для получения типов всех свойств внутри юнион типа с оператором typeof.