TypeScript 开发实战
梁宵
搜狗营销事业部高级架构师
34174 人已学习
新⼈⾸单¥59
课程目录
已完结/共 47 讲
TypeScript 开发实战
登录|注册
留言
43
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 06 | 枚举类型
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 重塑“类型思维”
02 | 类型基础(1):强类型与弱类型
03 | 类型基础(2):动态类型与静态类型
04 | 编写你的第一个TypeScript程序
05 | 基本类型
06 | 枚举类型
07 | 接口(1):对象类型接口
08 | 接口(2):函数类型接口
09 | 函数相关知识点梳理
10 | 类(1):继承和成员修饰符
11 | 类(2):抽象类与多态
12 | 类与接口的关系
13 | 泛型(1):泛型函数与泛型接口
14 | 泛型(2):泛型类与泛型约束
15 | 类型检查机制(1):类型推断
16 | 类型检查机制(2):类型兼容性
17 | 类型检查机制(3):类型保护
18 | 高级类型(1):交叉类型与联合类型
19 | 高级类型(2):索引类型
20 | 高级类型(3):映射类型
21 | 高级类型(4):条件类型
22 | ES6与CommonJS的模块系统
23 | 使用命名空间
24 | 理解声明合并
25 | 如何编写声明文件
26 | 配置tsconfig.json(1):文件选项
27 | 配置tsconfig.json(2):编译选项
28 | 配置tsconfig.json(3):工程引用
29 | 编译工具:从ts-loader到Babel
30 | 代码检查工具:从TSLint到ESLint
31 | 使用Jest进行单元测试
32 | 创建项目
33 | 组件与类型(1):函数组件与类组件
34 | 组件与类型(2):高阶组件与Hooks
35 | 事件处理与数据请求
36 | 列表渲染与路由
37 | Redux与类型
38 | 搭建服务端开发环境
39 | 列表的CRUD
40 | 导出Excel
41 | 搭建Vue开发环境
42 | 组件封装
43 | 组件发布
44 | 共存策略
45 | 宽松策略
46 | 严格策略
47 | 结课测试&结束语
本节摘要
登录 后留言

全部留言(43)

  • 最新
  • 精选
北冥有人
请问老师 1. 如何将一个 enmu 的 values, 转换为定义为 一个 string literal type。 比如: enum TestEnum { A = "a", B = "b", C = "c" } // TestTypeKey = "A" | "B" | "C"; type TestTypeKey = keyof typeof TestEnum; // 如果 根据 TestEnum 定义如下类型 type TestTypeValue = "a" | "b" | "c"; 2. 还有个问题, 给定 字符串 "a" 如何 找到 TestEnum.A

作者回复: 1)第一个问题: enum Test { A = 'a', B = 'b' } type TestValue = keyof Record<Test, string> TestValue 就是你需要的value字面量联合类型,但是你会发现它就是Test本身,可以取 Test.A 或 Test.B,其实和取 'a' 或 'b' 没有本质区别。 2)第二个问题: function getKey(value: string) { let key: keyof typeof Test for (key in Test) { if (value === Test[key]) return key } return null }

2020-05-27
3
4
Mokc
老师我想请问如果枚举类型是有名字的常量的集合的话,那么常量还是不能改变的,硬编码问题还是没有得到解决的吧?

作者回复: 常量不能改变的意思是,不能通过代码改变常量的值,但你可以修改定义常量的文件,而代码无需修改。

2019-07-23
3
3
AIGC Weekly 周报
老师您好,想问你一个问题: 将枚举类型或者枚举成员作为一种数据类型,有什么用处呢?意义在什么地方呢?

作者回复: 一般情况下把枚举当作常量来使用即可。课程中把枚举作为数据类型来讲,是想说明枚举、枚举成员和数字类型之间的兼容性问题,即枚举类型和数字类型是兼容的,枚举类型之间是不兼容的。

2020-03-14
2
2
渭河
枚举的成员 也可以作为一个类型 enum Enum { A } let a : Enum.A; 但是这样写的应用场景是什么

作者回复: 枚举基本不会这么用,一般直接引用Enum.A来使用。这里做这样的演示,只是为了说明枚举在类型兼容性方面的内部设计规则,理解一下即可。

2019-12-26
2
珍惜眼前人
enum Color{ red, green } const red: Color = 100 枚举 Color 作为类型注解,为什么这种写法不报错呢?Color默认是数字类型么?

作者回复: 枚举和number是类型兼容的,可相互赋值

2021-06-16
1
espelansa
交作业~~ enum Role { Reporter = 1, Developer, Maintainer, Owner, Guest } function initByRole(role: number) { if (role === Role.Developer || role === Role.Reporter) { console.log('you are developer or reporter'); } else if (role === Role.Maintainer || role === Role.Owner) { console.log('you are maintainer or owner'); } else if (role === Role.Reporter) { console.log('you are guest'); } else { console.log('OH NO!!!') } } 顺便想问一下老师: 最后关于枚举类还是比较难以理解,请问它的主要使用场景是什么样的?

作者回复: 主要用来定义一些常量,比如请求URL、文本提示信息、分类信息等等,这样方便记忆,减少硬编码,增加可读性。

2019-07-27
3
1
古夜
老师,难道我每次写一个文件比如 enum.ts都要在配置文件中修改访问的文件,每次都要手动编译吗?老师能否教一下怎么配置?

作者回复: 可以把新增文件在 index.ts中 import 进来,不用修改配置文件

2019-07-22
3
1
极客时间
~~~ ``` enum Role{ Reporter, Developer, Maintainer, Owner, Guest } function initByRole(role:Role){ if(role===1||role==2){ console.log("1,2") }else if(role==3||role==4){ console.log('4,5') }else if(role===5){ console.log(5) }else{ console.log(9999) } } initByRole(Role.Developer); ``` ~~~ 不知道是不是这样改

作者回复: 仍然存在硬编码

2019-07-18
1
cirzear
老师求指点: // 枚举类型 enum E {a,b} enum F {a = 0, b = 1} enum G {a = 'apple', b = 'banana'} let e1 : E.a = 1 let e2 : E.b = 1 let e3 : E.a = 1 // e1 === e2 e1 === e3 同一个枚举对象中不同成员也不能比较吗,但是同一个枚举对象中各个成员不是同一个枚举类型吗(比如F.a 和 F.b不是都是number类型吗) 还是因为ts本身就这么规定的吗,记住就行?

作者回复: 同一枚举类型的不同成员属于不同类型,但都与number类型兼容,所以它们可以被赋值number,但不能比较(因为类型永远不同,没有比较的必要)

2020-06-23
mimof9
类型思维,让我这样写。let month: number[] = [Month.Jan, Month.Feb, Month.Mar]; 老师把类型注解丢掉,是因为可以根据后面的内容自动推断类型么?

作者回复: 是的,推断的类型是Month[],与number[]兼容

2020-05-09
收起评论