У меня есть что-то вроде этого:
// enums.ts
export enum UserAction {
Login,
Logout
}
export enum PostAction {
DeletePost,
CreatePost
}
И в другом файле я хочу создать тип объединения из всех экспортированных элементов в "enums.ts"
Я пытался напишите код, как показано ниже, но что-то пошло не так. Это работает, только когда я соединяю их вручную.
import * as types from "./enums";
import { PostAction, UserAction } from "./enums";
type MyOldUnion = PostAction | UserAction; // works
type MyUnion = typeof types[keyof typeof types]; // not working
function useUnionType(type: MyUnion) {}
function useOldUnionType(type: MyOldUnion) {}
// TS2345: Argument of type 'PostAction.CreatePost' is not assignable to parameter of type 'MyUnion'.
useUnionType(PostAction.CreatePost);
useOldUnionType(PostAction.CreatePost);
Есть ли способ создать тип объединения программно из пространства имен?
Или, может быть, делать это в машинописный текст?
Моя машинописная версия: 3.9.7