我有以下枚举:
export enum SortDirection {
Asc = "asc",
Desc = "desc"
}
我已经为我的枚举项添加了字符串值,因此我可以将它们传递给lodash orderBy
函数。这很有效。
然而,当我尝试将枚举作为枚举进行比较时,问题就出现了。例如
export function getSortColumnClass(column: any, currentColumn: any,
currentDirection: SortDirection): string {
let className = "sorted-header";
if (currentDirection === SortDirection.Asc) {
className += " sorted-header-asc";
}
else {
className += " sorted-header-desc";
}
return className;
}
即使currentDirection
在函数参数列表中的类型为SortDirection
,currentDirection === SortDirection.Asc
也会引发错误,因为currentDirection
是以字符串形式出现的。当我检查typeof currentDirection
时,它甚至会返回string
。我必须将条件更改为currentDirection === 'asc'
,当然,这不再使其类型安全。
我希望能够使用类型安全的枚举项,除非我在其上调用toString()
以获取Enum值的字符串“version”。