Typescript / Angular 12:结构来访问嵌套的布尔/ enum权限



具有以下json结构,表示project: Projects[]:

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

为了访问项目的权限,在Angular 12/Typescript中定义对象的最佳方法是什么?我只想在一个地方定义权限名称(读,写,删除),因此我认为我应该使用enum类型。

示例(不工作):

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'。

如果没有修复我的方法是有意义的,也许另一种方法是更好的,在这种情况下?

Thanks in advance

显然解决方案很简单:

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

相关内容

  • 没有找到相关文章

最新更新