【发布时间】:2017-08-07 03:32:07
【问题描述】:
我收到来自 API 的响应,它返回一个枚举值。从 API 返回的值在请求中表示为字符串。
该值是 typescript 接口的 enum 属性。
问题:
收到响应时,TS 接口将该值存储为字符串(可能就是问题所在),因此我不能直接将其用作enum。
对象模型:
export interface Condo {
id:number
title:string
latitude:number
longitude:number
city:string
country:string
district:string
address:string
locationType: LocationType
}
export enum LocationType {
CONDO,
MALL,
STATION
}
请求:
getCondoAllByCountry(country_code){
return this.http.get(this.config.apiEndpoint +this.subApiUrl+'/all')
.map(res => <Condo[]>res.json())
.catch((err:Response) => {
return Observable.throw(err.json());
});
}
使用示例:
this.condoService.getCondoAllByCountry(this.userData.country_code).subscribe(data=>{
someFunc(data)
})
............
someFunc(condo_list: Condo[]){
//here is need to know the `locationType` for each object
console.log(typeof condo_list[i].locationType);
console.log(typeof LocationType.CONDO)
switch (condo_list[i].locationType){
case LocationType.CONDO:
console.log('Case - condo')
break;
case LocationType.MALL:
console.log('Case - mall')
break;
case LocationType.STATION:
console.log('Case - station')
break;
}
}
因此,switch.. case 不适用于此属性。在console.log() 我得到:
console.log(typeof condo_list[i].locationType); - string
console.log(typeof LocationType.CONDO) - number
那么,这意味着存在解析问题并且condo_list[i].locationType 不是enum(考虑到它应该为枚举显示number)?
我应该如何解决它?
【问题讨论】:
标签: angular typescript ionic2