问题描述
我有play_restart
喜欢
idle_streams
当我发送类似请求
时StructureInterface
export interface StructureInterface {
items: Array<string>;
status: VersionStatus;
}
export enum VersionStatus {
NEW,OLD,CHANGED
}
始终被解释为this.http.get<StructureInterface>(`myURL`);
,而不是枚举类型。这会带来比较和检查的服务器后果。
如何获取status
作为枚举和string
?
解决方法
需要手动将字符串转换为枚举,并且由于Typescript有点挑剔,所以我找到了TS3.9(?)解决方案
this.http.get<StructureInterface>(`myURL`).pipe(
map((item:StructureInterface) => {
item.status = VersionStatus[item.status as unknown as keyof typeof VersionStatus];
return item;
}));
所以,这是手动转换,不会自动完成:-/
更新
尽管我成功进行了转换,但是在发送enum
方面还是失败了。由于Angular将enum
用作HTTP请求的字符串数组中的字段,因此enum
的值将作为id发送,即1
而不是OLD
。 / p>
因此,我决定使用普通的string
,因为这样可以节省很多时间:-/