具有字符串值的Typescript枚举只能比较为字符串

时间:2017-11-14 15:29:46

标签: javascript typescript enums

我有以下枚举:

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在函数参数列表中的类型为SortDirectioncurrentDirection === SortDirection.Asc也会引发错误,因为currentDirection是以字符串形式出现的。当我检查typeof currentDirection时,它甚至会返回string。我必须将条件更改为currentDirection === 'asc',当然,这不再使其类型安全。

我希望能够使用类型安全的枚举项,除非我在其上调用toString()以获取Enum值的字符串“version”。

0 个答案:

没有答案