【问题标题】:Typescript / Angular 12: Structure to access nested boolean / enum permissionsTypescript / Angular 12:访问嵌套布尔/枚举权限的结构
【发布时间】:2021-11-15 00:12:00
【问题描述】:

有如下json结构,代表project: Projects[]

[
  {
    "id": "345",
    "permissions": {
      "read": true,
      "write": true,
      "delete": false
    }
  },
  {
    "id": "123",
    "permissions": {
      "read": true,
      "write": true,
      "delete": false
    }
  }
]

为了访问项目的权限,在 Angular 12 / Typescript 中定义对象的最佳方法是什么?

我只想在一个地方定义权限名称(读、写、删除),因此我想我会使用枚举类型。

示例(不工作):

export interface Project {
  id: string;
  permissions: permissions;
}

export type permissions = {
  [key in permissionsEnum]: boolean;
}

export enum permissionsEnum {
  read = "read",
  write = "write",
  delete = "delete"
}

通过项目ID访问权限属性:

  hasProjectRead(projectId: string): boolean {

    return !!this.projects.find((project => project.id === projectId && project.permissions[permissionsEnum.read] ===  true);
  }

错误:元素隐式具有“any”类型,因为“any”类型的表达式不能用于索引类型“Permissions”。

如果对我的方法没有任何修复意义,那么在这种情况下,也许另一种方法会更好?

提前致谢

【问题讨论】:

    标签: javascript angular typescript ecmascript-6


    【解决方案1】:

    显然解决方案很简单:

      hasProjectRead(projectId: string): boolean {
    
        return !!this.projects.find((project => project.id === projectId && project.permissions.read ===  true);
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 2015-06-17
      相关资源
      最近更新 更多