Day 5 基本型别 - part 2

今天要介绍其他的型别,是原本的 JavaScript 没有的,分别是 Tuple、Enum、Any、Uknown。

Tuple 型别一样是阵列,不过是定义好阵列内会有几个元素跟每个元素型别的型别。举例如下:

type Role = [number, string]
const role: Role = [1, 'FE developer']

Enum 是一种会自动帮你序列化的型别,假设今天在设定登入的角色时,分成 Admin、Read-only、Author,然後用数字来代表各角色时,在 JavaScript 时可能需要各自设定变数才存取,但如果用 Enum 型别会比较方便一些:

enum Role { ADMIN, READ_ONLY, AUTHOR }

https://ithelp.ithome.com.tw/upload/images/20210920/20131989q9D6Lv8nym.png
enum 型别会自动从 0 开始赋值,如果想要自己设定也没关系:

enum Role { ADMIN = 7, READ_ONLY, AUTHOR }

https://ithelp.ithome.com.tw/upload/images/20210920/20131989atZgEYK4MT.png
ADMIN 设定为 7,後面的变数就会自动序列化下去,如果不想要用数字,也可以设定成字串,总之非常方便的可以客制你自己需要的 Enum 型别。

再来就是 Any 型别,前面有提到这个型别,基本上就是不指定型别 XD!用了这个型别其实就跟用原生的 JavaScript 差不多意思了......,所以真的除非不知道会使用甚麽型别,否则不要轻易使用 Any 型别,因为这样 TypeScript 就没办法帮忙检查程序码的型别错误了。

如果没办法确认变数的型别的话其实还有另一个型别可以用,就是 Unknown,它也是跟 Any 型别一样能够接受各种型别,但是比 Any 严谨:
https://ithelp.ithome.com.tw/upload/images/20210921/201319892WzMxbWfim.png
这边可以看到它一样能够接受任何型别,但是如果想要把第 2 行的 userName 指派 userInput 的值,即使在第 5 行 userInput 已经重新赋值成字串了却还是会报错:
https://ithelp.ithome.com.tw/upload/images/20210921/20131989wVeGWOv46R.png
但是,如果把 userInput 指定成 Any 型别,这个错误就会被忽略了......:
https://ithelp.ithome.com.tw/upload/images/20210921/201319896YhGWTad9R.png
红色毛毛虫不见惹!所以如果真的有不确定型别的变数的话,请优先考虑使用 Unknown 型别~

今天先暂且介绍到这边,明天会继续介绍其他 JavaScript 没有的型别~


<<:  Powershell 入门之逻辑判断(上)

>>:  [Day19]PHP Interface介面

Day 8-单元测试完善 HelloBank、基础总结与核心技术概述 (基础-7)

单元测试基础的示范专案 HelloBank 收尾与现阶段总结 我们在Day 4-Visual Stu...

微聊 JSON 是什麽呢?

话说我们前几天都在聊 API 怎麽做,今天也来小聊一下做 API 时需要使用到的 JSON JSON...

[Day26] 用 Rocket 做一个图书馆门禁後端 (Part 3)

今天就要打疫苗了 然後我现在还没睡 掰了 明天没看到我的文就代表真的掰了 QQ 好 今天准备的内容比...

结语

结语 目前完成进度 登入 登出 朋友的邀请与拒绝和同意 新增聊天室 新增讯息 尚未完成 讯息显示 未...

#17-不用套件让网站Logo动起来~(SVG SMIL)

要让SVG 动起来,可以使用SMIL:SVG的原生动画规范, 虽然前几年Chrome放话不再支援,但...