枚举类型 TS-10

本文介绍了TypeScript中枚举的几种类型,包括数字枚举(默认值和自定义初始值)、字符串枚举、异构枚举(混合字符串和数字),以及在接口中的使用和常量枚举。同时讨论了数字枚举的反向映射功能。
摘要由CSDN通过智能技术生成

枚举的基本概念

枚举是一种在多种编程语言中都存在的数据类型,它可以帮助我们定义一组命名的常量。在 TypeScript 中,枚举不仅支持数字类型,还支持字符串和异构类型,这增强了枚举的灵活性和表达力。

数字枚举

数字枚举是 TypeScript 中最常用的枚举类型。默认情况下,数字枚举的第一个成员的值为 0,然后依次递增。

enum Color {
    red,    // 默认为 0
    green,  // 自动递增为 1
    blue    // 自动递增为 2
}
console.log(Color.red, Color.green, Color.blue); // 输出:0 1 2
自定义初始值

我们可以为枚举的第一个成员设定一个初始值,随后的成员将会按顺序递增。

enum Color {
    red = 2,
    green, // 自动递增为 3
    blue   // 自动递增为 4
}
console.log(Color.red, Color.green, Color.blue); // 输出:2 3 4

字符串枚举

字符串枚举的概念很简单。 在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。

由于字符串枚举没有自增长的行为,字符串枚举可以很好的序列化。 换句话说,如果你正在调试并且必须要读一个数字枚举的运行时的值,这个值通常是很难读的 - 它并不能表达有用的信息,字符串枚举允许你提供一个运行时有意义的并且可读的值,独立于枚举成员的名字。

enum Types {
    Red = 'red',
    Green = 'green',
    Blue = 'blue'
}

异构枚举

异构枚举混合了字符串和数字成员。这种枚举类型的使用比较少见,但它提供了更多的编码灵活性。

enum Types {
    No = "No",
    Yes = 1
}
console.log(Types.No, Types.Yes); // 输出:No 1

接口与枚举

在 TypeScript 中,我们可以在接口中使用枚举类型来定义特定的属性类型,这样可以保证实现接口的对象在这些属性上具有正确的值。

enum Color {
    no = "NO",
    yes = 1
}

interface A {
    red: Color.yes;
}

let B: A = {
    red: Color.yes // 或者直接使用 red: 1
}

常量枚举

常量枚举是使用 const 关键字定义的枚举,其目的是为了防止在编译阶段生成额外的代码,并且禁止对枚举成员的非直接访问。

const enum Types {
    success,
    fail
}

let code: number = 0;
if (code === Types.success) {
    console.log("我在人民广场吃炸鸡");
}

反向映射

数字枚举支持反向映射,即从枚举值到枚举名的映射。这不适用于字符串枚举成员,因为字符串枚举不生成反向映射。

enum Types {
    success
}
let success: number = Types.success;
let key = Types[success];
console.log(`value---${success}`, `key----${key}`); // 输出:value---0, key----success
  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值