Angular 角度:HTTPClient-嵌套枚举的转换

Angular 角度:HTTPClient-嵌套枚举的转换,angular,typescript,angular-httpclient,Angular,Typescript,Angular Httpclient,我有StructureInterfacelike export interface StructureInterface { items: Array<string>; status: VersionStatus; } export enum VersionStatus { NEW, OLD, CHANGED } 导出接口结构接口{ 项目:阵列; 状态:版本状态; } 导出枚举版本状态{ 新的、旧的、变了的 } 当我发送请求时,如 this.http.get<S

我有
StructureInterface
like

export interface StructureInterface {
  items: Array<string>;
  status: VersionStatus;
}
export enum VersionStatus {
  NEW, OLD, CHANGED
}
导出接口结构接口{
项目:阵列;
状态:版本状态;
}
导出枚举版本状态{
新的、旧的、变了的
}
当我发送请求时,如

this.http.get<StructureInterface>(`myURL`);
this.http.get(`myURL`);
状态
始终被解释为
字符串
,而不是枚举类型。这会对比较和检查产生严重影响


如何将
状态
作为enum和
字符串

需要手动将字符串转换为enum,由于Typescript有点挑剔,我找到了使用TS3.9(?)的解决方案

this.http.get(`myURL`).pipe(
映射((项目:结构接口)=>{
item.status=VersionStatus[item.status与keyof typeof VersionStatus一样未知];
退货项目;
}));
因此,这是一个手动转换,不是自动完成的:-/

更新 虽然转换成功,但在发送
enum
时失败。由于HTTP请求将
enum
用作字符串数组中的字段,因此
enum
的值作为id发送,即
1
而不是
OLD


因此,我决定使用普通的
string
,因为这节省了很多时间:-/

这是否回答了您的问题?这并不是HTML模板的真正原因,将它们作为枚举而不是字符串将是有益的。
this.http.get<StructureInterface>(`myURL`).pipe(
  map((item:StructureInterface) => {
       item.status = VersionStatus[item.status as unknown as keyof typeof VersionStatus];
       return item;
}));