You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用TypeScript拼接两个枚举的键动态生成权限枚举?

动态生成全组合权限类型

基于现有的AppEntity和AppAction两个枚举,自动生成两者所有键的组合权限类型(例如VIEW_CUSTOMER对应值'view customer'),无需手动逐个定义,用于开发阶段的字符串类型校验。

基础枚举定义

enum AppEntity {
  CUSTOMER = 'customer',
  SUPPLIER = 'supplier',
  DOCUMENT = 'document'
}

enum AppAction {
  VIEW = 'view',
  CREATE = 'create',
  EDIT = 'edit',
  DELETE = 'delete'
}

动态权限类型实现

先提取枚举的键类型,再通过类型映射生成全组合:

// 提取两个枚举的键类型
type PermissionAction = keyof typeof AppAction;
type PermissionModel = keyof typeof AppEntity;

// 动态生成所有权限组合的类型
export type AppPermissions = {
    [K in `${PermissionAction}_${PermissionModel}`]: K extends `${infer A}_${infer E}`
        ? A extends keyof typeof AppAction
            ? E extends keyof typeof AppEntity
                ? `${typeof AppAction[A]} ${typeof AppEntity[E]}`
                : never
            : never
        : never;
};

功能说明

  • AppPermissions会自动生成AppAction和AppEntity所有键的组合(比如VIEW_CUSTOMER、CREATE_DOCUMENT等)
  • 每个权限键对应的类型值为枚举值的拼接字符串(例如VIEW_CUSTOMER对应'view customer')
  • 开发阶段可用于校验字符串是否为合法的权限标识,避免手动维护权限列表的疏漏

内容的提问来源于stack exchange,提问作者DeltaTango

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:33:22