Cuando escribo enumeraciones en javascript, a menudo escribo:
const movementState = { stopped: 'stopped', walking: 'walking', running: 'running', }; Esto me permite usarlo como movementState.stopped y linting asegura que exista, además, si lo registro, su valor es legible por humanos.
Me gustaría algo como:
enum movementState = {stopped, walking, running};Nota: no tengo ningún interés en hacer esto en mecanografiado. Hago mi trabajo de supervivencia en TS, hago mi pasión en JS.
No estoy muy al día con el estándar... así que esperaba que tal vez se agregara algo nuevo en una de las etapas o algo así. Gracias~
Una opción sería asignar una matriz de cadenas a una matriz de entradas, usando la cadena como valor y como clave, y luego convertirla en un objeto con Object.fromEntries . No es extraordinariamente conciso, pero no estoy seguro de que puedas conseguir algo mejor.
const makeEnum = strs => Object.fromEntries( strs.map(str => [str, str]) ); const movementState = makeEnum(['stopped', 'walking', 'running']); console.log(movementState.running);