我是工会会员
type UserDtoRolesType = 'U' | 'C' | 'A';
我希望基于UserDtoRolesType“U”-〉“用户”创建新联合类型|“C”-〉“客户”|“A”-〉“管理员”*
我想得到的:
type UserRolesType = 'User' | 'Customer' | 'Admin';
我试着去做
type TRoleConverter<R> = R extends 'U' ?
'User' :
R extends 'C' ?
'Customer' :
R extends 'A' ? 'Admin' : never;
export type TUserRole = TRoleConverter<UserDtoRolesType>;
这给出了期望的结果,但看起来很麻烦,也不正确。有没有可能避免硬编码这一点,并获得一个新的联合类型?
2条答案
按热度按时间juud5qan1#
您可以使用Indexed Access Types来存档以下内容:
rkttyhzu2#
您可以像下面这样稍微简化代码,但是我不确定是否有其他方法可以改进解决方案。