Tengo esta clase, que se supone que representa una enumeración:
export default class ChangeStatusEnum { "added" = "added"; "deleted" = "deleted"; "edited" = "edited"; "unedited" = "unedited"; static constructFromObject(object) { return object; } }Openapi-generator 1 lo genera en la canalización, por lo que cambiarlo no es una opción. Esta no es una pregunta sobre las mejores prácticas para definir enumeraciones en vanilla-js o mecanografiado, esta pregunta es sobre cómo usar esta clase.
No entiendo la sintaxis de asignar a una cadena, no sé dónde se puede acceder a estas cuatro cadenas.
Aquí hay algunas cosas que he probado (en una prueba de jenkins para que puedan ejecutarse fácilmente):
test("access", () => { console.log(ChangeStatusEnum) // prints [class ChangeStatusEnum] console.log(JSON.stringify(ChangeStatusEnum)) // prints undefined console.log( ChangeStatusEnum.constructFromObject("deleted") === "deleted" ) // prints true console.log( ChangeStatusEnum.constructFromObject("nonexisting") === "nonexisting" ) // also prints true, which means this syntax has no value over just using strings instead of enums console.log(ChangeStatusEnum["added"]) // prints undefined console.log(ChangeStatusEnum.added) // prints undefined })Lo mínimo que espero de una estructura de datos que se llama a sí misma "enumeración" es que puedo construir y comparar valores sin temor a construir silenciosamente valores inexistentes. Iterar sobre todos los valores de una enumeración también sería bueno, pero no es estrictamente necesario. Supongo que hay una manera de hacer eso con esta estructura de datos que simplemente no conozco debido a la falta de conocimiento de construcciones avanzadas de javascript.
1 La herramienta es openapi-generator-cli en la versión 2.5.1 https://www.npmjs.com/package/@openapitools/openapi-generator-cli con openapi-generator-maven-plugin versión 6.0.0 https:// mvnrepository.com/artifact/org.openapitools/openapi-generator-maven-plugin Dado que esta es una herramienta algo madura, espero que su solución enum sea utilizable, es por eso que hago esta pregunta como una pregunta js y no como openapi -pregunta.