ESLint:要求对基于字符串的枚举键进行排序

时间:2020-04-27 09:59:16

标签: eslint

查看eslint sort-keys的文档,我可以让Visual Studio Code在行a上报告错误:

const obj = {
  b: '2',
  a: '1', // not sorted !
  c: '3',
  d: '4',
};

是否有一种方法可以实现enum的相同行为:

/* eslint sort-keys: "error" */
const enum obj {
  b= '2',
  a= '1', // no warning !
  c= '3',
  d= '4',
};
/* eslint-disable sort-keys */

更新:从我的问题描述中可能不清楚,但是我的枚举基于字符串。

3 个答案:

答案 0 :(得分:1)

您应该查看eslint-plugin-typescript-sort-keys,以及有关规则here的更多详细信息。 我还没有尝试过,但它似乎可以满足您的要求。

答案 1 :(得分:1)

如果您使用的是TypeScript,最好使用TSLint而不是ESLint。

您仍然可以将ESLint的某些规则与tslint-eslint-rules一起使用。

然后,您可以添加具有@crazyfactory/tslint-rules规则的enum-sort-keys,该规则与object-literal-sort-keys完全相同,但适用于enum

// Passes:

enum Character {
  AAA = "aaa",
  BBB = "bbb",
  CCC = "ccc"
}

// Fails:

enum Character {
  AAA = "aaa",
  CCC = "ccc", <- The key "CCC" is not sorted alphabetically.
  BBB = "bbb"
}

// Passes:

enum Number {
  ONE,
  THREE,
  TWO
}

// Fails:

enum Number {
  ONE,
  TWO, <- The key "TWO" is not sorted alphabetically.
  THREE
}

答案 2 :(得分:-1)

这并不是您问题的直接答案,但是使用TypeScript可以通过不声明所有值来实现隐式排序。例如,根据the official documentation,您可以执行以下操作:

enum Direction {
    Up = 1,
    Down,
    Left,
    Right,
}

这将被隐式排序。

相关问题