📜  枚举在 TypeScript 中是如何工作的?

📅  最后修改于: 2022-05-13 01:56:15.713000             🧑  作者: Mango

枚举在 TypeScript 中是如何工作的?

在本文中,我们将尝试了解与 TypeScript 中的枚举相关的所有事实。

TypeScript 枚举: TypeScript 枚举允许我们定义或声明一组命名常量,即相关值的集合,这些值可以是字符串或数字或任何其他数据类型的形式。

语法:以下是我们可以用来在 TypeScript 中初始化枚举的语法:

enum enum_name {
    // values......
}

在 TypeScript 中使用枚举的原因:

  • Enums 提供了一种在 TypeScript 中组织代码的好方法。
  • Enums 使用 JavaScript 中的内联代码节省了编译时间和运行时间。
  • 枚举允许在 JavaScript 中创建内存高效的自定义常量。

枚举在 TypeScript 中是如何工作的?

  • 枚举通常接受数字的默认值(从 0 开始)。
  • 尽管用户可以根据要求更改枚举中提供的值。
  • 枚举中的值被标记为常量,因此也可以访问它们,但不能更改或更改它们。
  • TypeScript 枚举的输出是我们在 JavaScript 中看到的一个对象(尽管 JavaScript 不支持枚举)。
  • 该对象由枚举中声明的命名属性组成。
  • 该对象还具有数字键,其字符串值表示命名常量。
  • 这就是为什么我们可以将一个数字传递给一个接受枚举的函数。
  • 换句话说,我们也可以将枚举成员可视化为一个数字和一个定义的常量。

数字枚举:数字枚举将字符串值存储为数字,并且可以使用关键字 enum 声明它们。以下是一些示例,它们将帮助我们以更好和更清晰的方式理解数字枚举 -

示例:在此示例中,我们将创建一个数字枚举来存储汽车信息,然后我们将使用该枚举显示一些特定的结果。

Javascript
enum CarName {
    Honda,
    Toyota,
    Alto,
    Swift,
}
console.log(CarName);
console.log("Value of Alto is : "+ CarName.Alto);


Javascript
enum CarName {
    Honda = 10,
    Toyota,
    Alto,
    Swift,
}
console.log(CarName);
console.log("Value of Alto is : "+ CarName.Alto);


Javascript
enum fruitsName {
    Apple = "APPLE",
    Banana = "Banana",
    Mango = "Mango",
    Papaya = "Papaya"
}
console.log(fruitsName);
  
console.log("Fruit name is : " + fruitsName.Apple);


Javascript
enum studentDetails {
    name = "ABCD",
    age = 20,
    rollno = 12345,
    address = "XYZ Place PQR city",
    school_name = "ABCDEFG"
}
console.log(studentDetails);


输出:

{
  '0': 'Honda',
  '1': 'Toyota',
  '2': 'Alto',
  '3': 'Swift',
  Honda: 0,
  Toyota: 1,
  Alto: 2,
  Swift: 3
}
Value of Alto is : 2

示例:在此示例中,我们将在枚举中初始化一个值,因此其他值将自行递增。

Javascript

enum CarName {
    Honda = 10,
    Toyota,
    Alto,
    Swift,
}
console.log(CarName);
console.log("Value of Alto is : "+ CarName.Alto);

输出:

{
  '10': 'Honda',
  '11': 'Toyota',
  '12': 'Alto',
  '13': 'Swift',
  Honda: 10,
  Toyota: 11,
  Alto: 12,
  Swift: 13
}
Value of Alto is : 12

字符串枚举:字符串枚举与数字枚举非常相似,但它们的枚举值是用字符串值而不是数字值初始化的。字符串枚举比数字枚举具有更好的可读性。

以下示例将帮助我们以更好、更清晰的方式理解字符串枚举——

示例:在此示例中,我们将创建一个字符串枚举,它将存储字符串数据类型中的所有值。

Javascript

enum fruitsName {
    Apple = "APPLE",
    Banana = "Banana",
    Mango = "Mango",
    Papaya = "Papaya"
}
console.log(fruitsName);
  
console.log("Fruit name is : " + fruitsName.Apple);

输出:

{ Apple: 'APPLE', Banana: 'Banana', Mango: 'Mango', Papaya: 'Papaya' }
Fruit name is : APPLE

异构枚举:异构枚举包含数字和字符串枚举值。以下示例将以更好和清晰的方式解释异构枚举 -

示例:在此示例中,我们将存储一些数据,这些数据既可以是数字形式,也可以是字符串形式。

Javascript

enum studentDetails {
    name = "ABCD",
    age = 20,
    rollno = 12345,
    address = "XYZ Place PQR city",
    school_name = "ABCDEFG"
}
console.log(studentDetails);

输出:

{
  '20': 'age',
  '12345': 'rollno',
  name: 'ABCD',
  age: 20,
  rollno: 12345,
  address: 'XYZ Place PQR city',
  school_name: 'ABCDEFG'
}

使用枚举的地方:只要有一小部分可用且密切相关的固定值,并且这些值在编译时已知,就应该使用枚举。