繁体   English   中英

具有IDE完成功能的Javascript伪枚举

[英]Javascript pseudo-enum with IDE completion

有时我需要像枚举一样的结构来固定Node.JS中的字符串值集。 基本上是一个具有用于每个枚举值的键的对象,每个值是一个与键相等的字符串:

var State = {FOO: 'FOO', BAR: 'BAR', SOME_REALLY_LONG_NAME: 'SOME_REALLY_LONG_NAME'};

这使我可以键入State.S ,并且IDE会建议State.SOME_REALLY_LONG_NAME ,实际上消除了错别字。 我可以做if (x === State.FOO)

但是,上述语法显然是不理想的,因为在创建值集的过程中每个文字都有重复。 所以我可以例如:

var State = _.indexBy(['FOO', 'BAR', 'SOME_REALLY_LONG_NAME'];

但是,一旦间接创建对象,IDE(在我的情况下为WebStorm)将无法建议/自动完成值。 当然,对于JavaScript而言,无论如何我们对自动完成工作并不十分满意,但是就我而言,它使我感到烦恼,因为我的“枚举”的全部目的是简化一组固定字符串的使用。

也有几个枚举实用程序可以创建更合适的枚举,但是它们会遇到相同的问题。 另外,如果我基本上需要固定的一组字符串,则更合适的枚举将迫使我编写State.FOO.key以获取字符串值。

有没有一种聪明的方法可以完成这些非常简单的{key:'key'}映射,而不必在创建过程中两次键入每个键,但仍保持IDE对对象中存在哪些属性的理解? 我猜WebStorm仅执行静态代码分析,一旦调用函数,该分析就会消失。 还是有一些聪明的把戏?

我使用Webstorm已经有一段时间了,它是宏实用程序,但是也许您可以编写一个简单的宏,将您的String-Array扩展为所需的Structure。

否则,您可以尝试使用Typescript插件。 首先:每个有效的JS应该是有效的TS(不完全了解ES7,以及某些ES6是否会打扰该插件)。

但是TS具有枚举实现,因此webstorm应该为您提供自动填充和类型安全性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM