TypeScript学习实战-5-其他枚举类型

360 阅读3分钟

这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

前言

现在 TypeScript + Vue3 应用特别广了, 如果不学习, 总感觉跟不上大厂的步伐了. 学习 TypeScript(虽然觉得也是可选的,但还是要学,真卷...) 这里记录学习 TypeScript 的过程, 收录在 TypeScript 实战专栏

回顾上一篇: 学习了 TS 的枚举类型/ 枚举类型概念及分类/ 数字枚举 举例以及枚举类型的使用方法

本文来学习较 JavaScript 没有而 TS 的类型: 枚举类型(二)

1. Typescript 文档

Typescript 官网地址: typescriptlang.org/zh/

Typescript 文档地址:Basic Types

TypeScript 枚举类型(二)

这里学习下其他的一些枚举类型

枚举类型分类

TypeScript 支持数字的和基于字符串的枚举

  1. 数字枚举(上文)
  2. 字符串枚举
  3. 常量枚举
  4. 异构枚举
  5. 联合枚举 与枚举成员的类型

枚举类型的使用:

  1. 字符串枚举:

对比上文学的 数字枚举的自增行为, 字符串枚举没有自增长的行为

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

// 数字枚举 成员为 数值
/// 这时 UP 将从 1 开始, 依次类推 Down 为 2
enum Direction {
  Up = 1,
  Down,
  Left,
  Right,
}
// 这时给枚举初始化 是一个字符串, 其他成员都是字符串
enum Direction {
  Up = 'UP',
  Down = 'DOWN',
  Left = 'LEFT',
  Right = 'RIGHT',
}

使用字符串枚举

字符串枚举允许你提供一个运行时有意义的并且可读的值,独立于枚举成员的名字。

  1. 异构枚举(Heterogeneous enums)

枚举可以混合字符串和数字成员, 但是看到下面的代码, 或许就不会这么使用了 e

enum BooleanLikeHeterogeneousEnum {
  No = 0,
  Yes = 'YES',
}
  1. 联合枚举与枚举成员的类型

    存在一种特殊的非计算的常量枚举成员的子集:字面量枚举成员。 字面量枚举成员是指不带有初始值的常量枚举成员,或者是值被初始化为:

    • 任何字符串字面量(如: "foo", "bar", "baz"
    • 任何数字字面量(如: 1100
    • 应用了一元 - 符号的数字字面量(例如: -1-100

Vue3 学习实战系列更文:

  1. Vue3 源码学习-工具函数 utils(二)
  2. Vue3-初体验,
  3. Vue3-生命周期setup()函数,
  4. Vue3-computed & watch,
  5. Vue3-Teleport 改变组件挂载的根节点,
  6. Vue3-Suspense 处理异步请求,
  7. Vue3-defAsyncComponent 异步组件(新增),
  8. Vue3-fragments (新增),
  9. Vue3-v-model (非兼容),
  1. TypeScript 系列: