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

TypeScript遍历含enum类型的成员对象数组校验指定id与权限的问题

问题根源

你使用的是TypeScript默认的数字枚举类型,PermissionsEnum.projectAdmin的实际取值是数字0,但接口返回的permissions对象的键是字符串"projectAdmin",二者类型不匹配,因此通过枚举值访问属性时会返回undefined。

解决方案

有两种常用修复方式:

  • 方案1:修改枚举为字符串枚举(更推荐,可彻底避免类似类型不匹配问题)
    将PermissionsEnum的定义修改为显式赋值的字符串枚举:
    export enum PermissionsEnum {
      projectAdmin = 'projectAdmin',
      projectEdit = 'projectEdit',
      projectView = 'projectView'
    }
    
    之后校验逻辑可直接简化为:
    return !!this.memberships?.find((membership) =>
      membership.id === 'xyz' && membership.permissions[PermissionsEnum.projectAdmin]
    );
    
  • 方案2:不修改枚举定义,通过反向映射取枚举的字符串键名
    数字枚举支持反向映射,可以通过PermissionsEnum[枚举值]拿到对应的字符串键名,修改校验逻辑即可:
    return !!this.memberships?.find((membership) =>
      membership.id === 'xyz' && membership.permissions[PermissionsEnum[PermissionsEnum.projectAdmin] as keyof typeof PermissionsEnum]
    );
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:27:00