sort-keys (Rules) – Eslint 中文开发手册
sort-keys (Rules) - Eslint 中文开发手册
在声明多个属性时,一些开发人员喜欢按字母顺序对属性名称进行排序,以便稍后能够更轻松地找到必要的属性。其他人则认为这增加了复杂性,并成为维护的负担。
规则细节
该规则检查对象表达式的所有属性定义并验证所有变量是按字母顺序排序的。
此规则的错误代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /*eslint sort-keys: "error"*/ /*eslint-env es6*/ let obj = {a: 1, c: 3, b: 2}; let obj = {a: 1, "c" : 3, b: 2}; // Case-sensitive by default. let obj = {a: 1, b: 2, C: 3}; // Non-natural order by default. let obj = {1: a, 2: c, 10: b}; // This rule checks computed properties which have a simple name as well. // Simple names are names which are expressed by an Identifier node or a Literal node. const S = Symbol( "s" ) let obj = {a: 1, [ "c" ]: 3, b: 2}; let obj = {a: 1, [S]: 3, b: 2}; |
此规则的正确代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /*eslint sort-keys: "error"*/ /*eslint-env es6*/ let obj = {a: 1, b: 2, c: 3}; let obj = {a: 1, "b" : 2, c: 3}; // Case-sensitive by default. let obj = {C: 3, a: 1, b: 2}; // Non-natural order by default. let obj = {1: a, 10: b, 2: c}; // This rule checks computed properties which have a simple name as well. let obj = {a: 1, [ "b" ]: 2, c: 3}; let obj = {a: 1, [b]: 2, c: 3}; // This rule ignores computed properties which have a non-simple name. let obj = {a: 1, : 3, b: 2}; let obj = {a: 1, [ "c" + "d" ]: 3, b: 2}; let obj = {a: 1, [`${c}`]: 3, b: 2}; let obj = {a: 1, [tag`c`]: 3, b: 2}; |
选项
1 2 3 | { "sort-keys" : [ "error" , "asc" , { "caseSensitive" : true , "natural" : false }] } |
第一个选项是"asc"或"desc"。
"asc" (默认) - 强制属性按升序排列。"desc" - 强制属性按降序排列。
第二个选项是具有2个属性的对象。
caseSensitive- 如果true强制执行属性以区分大小写的顺序。默认是true。natural- 如果true强制性质按照自然顺序执行。默认是false。自然顺序以人类排序的方式比较包含字母和数字组合的字符串。它基本上按数字排序,而不是按字母顺序排序。所以数字10出现在自然分类中的数字3之后。
列表示例:
natural为真,顺序将是1 3 6 8 10
natural为假,则排序为1 10 3 6 8
desc
选项的错误代码示例"desc":
1 2 3 4 5 6 7 8 9 10 11 | /*eslint sort-keys: ["error", "desc"]*/ /*eslint-env es6*/ let obj = {b: 2, c: 3, a: 1}; let obj = { "b" : 2, c: 3, a: 1}; // Case-sensitive by default. let obj = {C: 1, b: 3, a: 2}; // Non-natural order by default. let obj = {10: b, 2: c, 1: a}; |
选项的正确代码示例"desc":
1 2 3 4 5 6 7 8 9 10 11 | /*eslint sort-keys: ["error", "desc"]*/ /*eslint-env es6*/ let obj = {c: 3, b: 2, a: 1}; let obj = {c: 3, "b" : 2, a: 1}; // Case-sensitive by default. let obj = {b: 3, a: 2, C: 1}; // Non-natural order by default. let obj = {2: c, 10: b, 1: a}; |
insensitive
选项的错误代码示例{caseSensitive: false}:
1 2 3 4 5 | /*eslint sort-keys: ["error", "asc", {caseSensitive: false}]*/ /*eslint-env es6*/ let obj = {a: 1, c: 3, C: 4, b: 2}; let obj = {a: 1, C: 3, c: 4, b: 2}; |
选项的正确代码示例{caseSensitive: false}:
1 2 3 4 5 | /*eslint sort-keys: ["error", "asc", {caseSensitive: false}]*/ /*eslint-env es6*/ let obj = {a: 1, b: 2, c: 3, C: 4}; let obj = {a: 1, b: 2, C: 3, c: 4}; |
natural
选项的错误代码示例{natural: true}:
1 2 3 4 | /*eslint sort-keys: ["error", "asc", {natural: true}]*/ /*eslint-env es6*/ let obj = {1: a, 10: c, 2: b}; |
选项的正确代码示例{natural: true}:
1 2 3 4 | /*eslint sort-keys: ["error", "asc", {natural: true}]*/ /*eslint-env es6*/ let obj = {1: a, 2: b, 10: c}; |
何时不使用
如果您不想通知属性的订单,那么禁用此规则是安全的。
相关规则
sort-importssort-vars
兼容性
JSCS: validateOrderInObjectKeys版本此规则是在ESLint 3.3.0.Resources中引入的Rule sourceDocumentation source
Eslint 中文开发手册
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架