【发布时间】:2018-10-21 15:55:32
【问题描述】:
如果我有这样定义的枚举:
export enum State {
Archived = 0,
OnShoppingListChecked = 1,
OnShoppingListUnchecked = 2
}
还有一个使用枚举的类:
import { State } from "./State";
export class GroceryDto {
public name: string = null;
public currentState: State = null;
}
export default GroceryDto;
我有一些代码试图根据 currentState 的 GroceryDto 进行过滤,但没有限定要输入到数组中的任何内容。
//...some code to fetch data
let activeGroceries = response.data.activeGroceries as GroceryDto[]; //casts correctly to an array of 4 items
let visibleGroceries = activeGroceries.filter(
g => g.currentState === State.OnShoppingListUnchecked
);
//visibleGroceries is empty but should return the same 4 values
我可以通过转换为字符串来获得我想要的结果,但如果我使用打字稿,这似乎是不必要的。
let filtered = visibleGroceries.filter(
g =>
g.currentState.toString() === State[State.OnShoppingListUnchecked]
);
【问题讨论】:
-
activeGroceries中的数据是什么样的?也许您是从服务器获取strings,而不是枚举值(似乎是数字) -
如果您从网络调用中获得的值是字符串(而且看起来是) - 您可以使用字符串枚举:
enum State { Archived = 'Archived' ... } -
你们都说对了,
GroceryDto中的public currentState: State = null;是作为字符串而不是枚举从服务器序列化的。
标签: typescript enums filtering