【发布时间】: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