TypeScript 从入门到进阶之基础篇(三) 元组类型篇

发布时间:2024年01月06日

在这里插入图片描述

系列文章目录

TypeScript 从入门到进阶系列

  1. TypeScript 从入门到进阶之基础篇(一) ts基础类型篇
  2. TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇


前言

在前面 我们学习了 在TypeScript 中如何使用、定义基础类型以及 TypeScript 中 引用类型的使用、定义,本章我们来讲解一个TypeScript 中独有的 元组 类型

在TypeScript中,元组类型是一种特殊的数组类型,它允许你在一个数组中存储多个不同类型的元素。元组类型使用固定的序列来定义每个元素的类型,并且元素的数量是有限的。
*注意:元组就是数组的变种是固定数量的不同类型的元素的组合

一、在TypeScript中使用元组

在TypeScript中使用元组,其实和数组的定义差不多,但和数组不同的是元组的数量是固定的,元组的好处在于可以把多个元素作为一个单元传递

//元组的定义 和数组差不多是吧 但是区别是每一项的类型可以不同,数量是固定的 且不能有数组的一些操作
let arr1:[string,number]=['我是元组中的一项'1]

//错误使用例子1
arr1.push('其实我添加不了')
arr1.pop()

二、TypeScript 中元组的使用场景

TypeScript中的元组(Tuple)主要用于表示具有固定数量和类型的元素的数组。元组可以在以下场景中使用:

1、让函数返回多个值:

通常情况下,函数只能返回一个值。但是通过使用元组,可以将多个相关的值打包成一个返回值。这在需要一次性返回多个结果的情况下非常有用。

function getUserInfo(): [string, number] {
  let name: string = "John";
  let age: number = 30;
  return [name, age];
}

let [name, age] = getUserInfo();
console.log(`Name: ${name}, Age: ${age}`); // 输出:Name: John, Age: 30

2. 处理具有固定数量和类型的数据:

有时需要处理某种特定类型的数据,且元素的数量和类型是固定的。例如,表示一个坐标的二维元组。

let coordinate: [number, number] = [10, 20];
console.log(`X: ${coordinate[0]}, Y: ${coordinate[1]}`); // 输出:X: 10, Y: 20

3. 作为函数参数的类型注解:

可以使用元组作为函数参数的类型注解,确保传入的参数与指定的数量和类型匹配。

function calculateArea(coordinates: [number, number]): number {
  let [x, y] = coordinates;
  return x * y;
}

let area = calculateArea([10, 20]);
console.log(area); // 输出:200

总之,元组可以用于处理具有固定数量和类型的数据,并且可以在函数返回多个值或作为函数参数的类型注解时非常有用。

三、 使用元组的异常情况

在TypeScript中,元组是指定数组中元素类型的一种特殊数组类型。与普通数组不同的是,元组中的每个位置可以有不同的类型。

以下是一些在使用元组时会报错的情况:

1、元组长度不匹配:

当元组声明的长度与实际使用时的长度不匹配时,会报错。

let tuple: [number, string] = [1, "hello", true]; // 报错:元组长度不匹配

2、越界访问:

当访问元组中不存在的位置时,会报错。

let tuple: [number, string] = [1, "hello"];
console.log(tuple[2]); // 报错:越界访问

3. 类型不匹配:

当给元组赋值时,类型不匹配会报错。

let tuple: [number, string] = [1, "hello"];
tuple[0] = "world"; // 报错:类型不匹配

需要注意的是,元组的类型声明在使用时是静态检查的,但在运行时是没有影响的。即使出现了类型错误,仍然可以编译成功,但可能会导致运行时错误。在TypeScript中,元组是指定数组中元素类型的一种特殊数组类型。与普通数组不同的是,元组中的每个位置可以有不同的类型。

文章来源:https://blog.csdn.net/weixin_49014702/article/details/135431676
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。