如何在Node.js中使用ES6创建枚举值?

3

是否可以在JavaScript中创建枚举值并将它们分配给整数值,类似于其他语言。例如,在C#中,我以以下方式声明枚举:

enum WeekDays
{
    Monday = 0,
    Tuesday =1,
    Wednesday = 2,
    Thursday = 3,
    Friday = 4,
    Saturday =5,
    Sunday = 6
}
4个回答

7

您可以像下面的例子一样将对象冻结后将其用作枚举:

const WeekDays = Object.freeze({
  Monday: 0,
  Tuesday: 1,
  Wednesday: 2,
  Thursday: 3,
  Friday: 4,
  Saturday: 5,
  Sunday: 6
})

谢谢,抱歉我还不熟悉JavaScript,为什么我们要使用object.freeze,以及如何将它放入文件中并在应用程序的不同部分中使用。当从数据库读取整数值时,如何将其转换回枚举值? - arve
在您的项目中创建一个constants.js文件,并将以下内容放入文件中:export const WeekDays - fazlu

4
你可以创建一个简单的对象,然后通过 module.exports 导出它:
// days.js
module.exports = {
  Monday: 0,
  Tuesday: 1,
  Wednesday: 2,
  Thursday: 3,
  Friday: 4,
  Saturday: 5,
  Sunday: 6
}

// file-where-you-want-to-use.js
const DAYS = require('./days.js');
console.log(DAYS.Monday);

1
您可以使用普通的对象:

const WeekDays = {
    Monday: 0,
    Tuesday: 1,
    Wednesday: 2,
    Thursday: 3,
    Friday: 4,
    Saturday: 5,
    Sunday: 6
}

const day1 = WeekDays.Monday;
const day2 = WeekDays.Tuesday;

console.log(day1, day2, day1 === day2);
console.log(day1 === WeekDays.Monday, day2 === WeekDays.Tuesday);


谢谢,我想在整个应用程序中都可以使用此枚举。因此,如果我将其放入自己的文件enum.js中,则如何在其他文件中使用weekdays? - arve
@arve 你需要导出这个 "enum",然后你就可以在其他文件中导入它了。请参考 CommonJS:https://flaviocopes.com/commonjs/ - Olian04

0

要添加一些你想使用的变量:

// days.js
module.exports = {
  Monday: 0,
  Tuesday: 1,
  Wednesday: 2,
  Thursday: 3,
  Friday: 4,
  Saturday: 5,
  Sunday: 6
}

// file-where-you-want-to-use.js
const DAYS = require('./days.js');
const firstDayOfWeek = 'Monday';

console.log((DAYS)[firstDayOfWeek]);   // 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接