javascript - Typescript / Angular 12:访问嵌套布尔/枚举权限的结构
问题描述
具有以下 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);
}
错误:元素隐式具有“任何”类型,因为“任何”类型的表达式不能用于索引“权限”类型。
如果对我的方法没有任何意义,那么在这种情况下,也许另一种方法更好?
提前致谢
解决方案
显然,解决方案很简单:
hasProjectRead(projectId: string): boolean {
return !!this.projects.find((project => project.id === projectId && project.permissions.read === true);
}
推荐阅读
- python - TypeError:在 selenium 中使用 xpath 时,node.ownerDocument 为空
- css - 将 li 元素的样式更改为 V 形
- c++ - 汇编程序和 gcc 中的 IRET
- c# - 如何使用 C# 使用 2 个阅读器返回多个 SQL 行数据
- javascript - 如何使 jquery 可对动态获取的数据进行排序?
- javascript - 如何让不同的单选按钮做不同的事情?
- dask - dask:如何找出给定未来的优先级
- pycharm - 在 PyCharm 中配置 conda 环境,我在 bin 中找不到 conda 执行
- java - 如何通过流计算地图中的单词
- php - 删除多个数据库行和具有相同标题的图像