我在Angular中有一个HTTP服务,该服务返回特定用户允许的访问权限。样本响应如下:-
{
"accessId": 4209318492034,
"folderPath": "data/sample_folder/",
"permissions": [
"READ",
"WRITE"
]
}
具体来说,权限字段是一个数组,将仅包含以下字符串,"READ"
(必填)和"WRITE"
(可选,可能存在或可能不存在)。
我想使用接口键入此响应,并且为了强制在权限数组中仅存在这些字符串,我创建了一个Enum,如下所示:-
enum Permissions {
READ = 'READ',
WRITE = 'WRITE'
}
但是在界面中按如下方式使用它不起作用:-
export interface UserAccess {
accessId: string;
folderPath: string;
permissions: Permissions[]
}
如何强制权限数组仅包含定义的Permissions字符串枚举中的值?
答案 0 :(得分:2)
不使用枚举,请使用类型:
export type Permissions = 'READ'|'WRITE'
export interface UserAccess {
accessId: string;
folderPath: string;
permissions: Permissions[]
}
答案 1 :(得分:1)
您可能要尝试以下操作:
export interface UserAccess {
permissions: (keyof typeof Permissions)[]
}
注意:TypeScript只是一个编译时概念,在运行时不执行任何操作。