今天要来介绍,Typescript 特有的类型 Tuple
、 Enum
,到底会是什麽,有趣的地方会是哪些呢?
初步看到 Tuple
时,觉得这不就是 Array
吗?心里暗自窃喜了一下,不过 JavaScript 就有 Array
了,为何 TypeScript 还要新增一个呢? 但相较下去发现,原来没那麽单纯,如下
正常我们在定义 Array
会是这样
let testArray: (number | string)[];
testArray = ['CY', 28]
console.log(testArray) // ['CY', 28]
但是如果是用 Tuple
,会有以下的状况
当我们定义好型别,预设值给与空阵列时,TypeScript 就会进一步提醒我们,不能这样做,哇~第一步就给个震撼弹!
let testArray: [number, string] = [];
接下来赋值,第一个元素给予字串,再次得到 TypeScript 的关爱。
let testArray: [number, string];
testArray = ['28', 'CY']
有发现了什麽吗?
没有错,Tuple
相较 Array
更加严格,因此不管是型别或者是位子都必须按照当初注解的规则走,很强硬,但是对需要带入固定元素的阵列,起了一个很大的保护。
有没有觉得 Tuple
跟 Array
很像,只是比较严格一点,再来一发好消息,就是也可以使用 Array
的方法,例如 push
、concat
等。
我们试着使用 push
let testArray: [number, string] = [28, 'CY'];
testArray.push('will', 26)
console.log(testArray) //[ 28, 'CY', 'will', 26 ]
这边发现如果是用 push
是可以将元素直接添加进去,而不会报错,但是直接赋值是必须按照一开始注记的型别和元素数量规则走。
复习一下,阵列和元组的差别。
阵列 => 只要符合一开始的元素型注记的规则,例如:let test: (string|number)
,元素就必须是 string
和 number
,其余元素的数量和顺序就没有限制。
元组 => 必须元素数量固定,每个元素型别也要完全一样。
今天到此,明天将带来另一个扩充型别 列举(Enum)
,期待明日~
<<: Day10. 人与人之间偶有摩擦,物体与物体之间叫做碰撞 - Collision(上)
>>: [Day10] 以深度学习进行时间序列预测 — 概论
“I am a cage, in search of a bird.” ― Franz Kafka...
官方文件 完成我们Plugin 的功能後,我们要建立一些文件,之後upload 至pub.dev 後...
本文同步更新於blog Memento Pattern 透过对象外的存档,让对象能够载入之前的状态...
Flutter API Get using Bloc state management and ht...
「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...