05-元组类型

元组类型是ts新增的类型之一,元组最重要的特性是可以限制数组元素的个数和类型,它特别适合用来实现多值返回。可以说元组就是固定长度的数组,下面开始介绍元组的语法

元组用于保存定长定数据类型的数据
let x: [string, number]; // 类型必须匹配且个数必须为2
x = ['hello', 10]; // OK 
x = ['hello', 10,10]; // Error 
x = [10, 'hello']; // Error
元组类型的解构赋值
let employee: [number, string] = [1, "Semlinker"];
let [id, username] = employee;
console.log(`id: ${id}`);
console.log(`username: ${username}`);

以上代码成功运行后,控制台会输出以下消息:

id: 1
username: Semlinker

这里需要注意的是,在解构赋值时,如果解构数组元素的个数是不能超过元组中元素的个数,否则也会出现错误,比如:

let employee: [number, string] = [1, "Semlinker"];\
let [id, username, age] = employee;

在以上代码中,我们新增了一个 age 变量,但此时 TypeScript 编译器会提示以下错误信息:

Tuple type '[number, string]' of length '2' has no element at index '2'.
元组类型的可选元素

和函数类型一样,元组类型的类型也是可以选择的,用法是在类型定义之后用?

let a : [string,number?];
a=['12']    //通过
a=['asd',1]     //通过
a=[1,1]     //不通过,第一个元素应该为字符串类型
元组类型的剩余元素

就像js的数组一样,有场景需要长度不固定的数组,且前几个元素类型已被确定,那么这时候就可以用元组的剩余元素。
元组类型里最后一个元素可以是剩余元素,形式为 …X,这里 X 是数组类型。剩余元素代表元组类型是开放的,可以有零个或多个额外的元素。 例如,[number, …string[]] 表示带有一个 number 元素和任意数量string 类型元素的元组类型。为了能更好的理解,我们来举个具体的例子:

type RestTupleType = [number, ...string[]];
let restTuple: RestTupleType = [666, "Semlinker", "Kakuqo", "Lolo"];
console.log(restTuple[0]);
console.log(restTuple[1]);
元组的只读属性

ts3.4版本的新特性,可以保证元组的元素不被修改,任何企图修改元组中元素的操作都会抛出异常,相当于const关键字

const point: readonly [number, number] = [10, 20];

不要嘲笑那些比你们拼命努力的人,也不要理会那些嘲笑你拼命努力的人。

你可能感兴趣的:(TypeScript,javascript,typescript,前端)