Typescript 中的数组、元组和枚举类型

简介: 本文介绍了`Typescript` 的数组类型和元组类型,声明数组有两种方式,可以声明为静态类型的数组,也可以使用 `any` 声明为动态类型的数组。元组是一种特殊的数组,特点是长度固定,元素类型固定。然后介绍了 `Typescript` 的枚举类型,枚举类型在开发中经常使用,配合 `switch` 语句十分强大。

数组

创建数组有两种方式。比如创建一个元素类型是 number 类型的数组:

let arr:number[] = [1, 2, 3, 4, 5];

还可以使用泛型创建数组:

let arr2:Array<number> = [1, 2, 3, 4, 5];

强类型语言中泛型使用的非常广泛,它不需要提前指定类型,直到真正要使用的时候再将类型通过参数的形式传递进来。

JS 中的数组非常灵活,长度不固定,元素类型任意。TS 也可以定义元素类型任意的数组:

// 元素类型是 number 或者 string
let arr3:(number|string)[] = [1, '2'];

使用 any 处理为动态类型的数组,表现就和 JS 一致了:

let arr3:any[] = [1, '2', false];

元组

元组类型是 TS 扩展的类型,原生 JS 中没有这个类型。

元组是一种特殊的数组,特点是长度固定元素类型固定

let person:[string, number] = ['kw', 18];

变量 person 的长度固定,类型也必须和声明的类型保持一一对应。如果将 person 的第一个元素改为其他非数字 string 类型,或者新增一个元素,都会报错:

person[0] = 20; // 报错:Type 'number' is not assignable to type 'string'.

person[2] = 30; // 报错:Type '30' is not assignable to type 'undefined'.

但是使用数组的 push 方法来给元组新增元素是不会报错的,并能能影响元组的值:

person.push(30);
console.log(person); // [ 'kw', 18, 30 ]

在使用元组时需要注意这一点。

还有,在声明元组时一定要指定类型,否则将会处理为普通的数组使用。

元组类型适合组织有规律的数据,比如定义一个学生,有姓名和学号,就适合使用元组类型来描述,方便代码进行处理。

枚举

枚举就是将一个类型的所有可能的值都列举出来。

枚举是一个很有用的功能。ES3 中就将 enum 作为保留字,但是直到现在,ECMAScript 规范中仍然没有实现枚举类型。

在 JS 中通常会使用一个对象模拟枚举来使用,比如要使用一个 Color,它有三个值:

let Color = {
    red:0,
    green: 1,
    blue: 2
}

如果使用枚举类型,应该这样定义:

enum Color {
    red,
    green,
    blue
}

枚举类型的成员的值默认从 0 开始。使用枚举:

let red = Color.red; // 0

变量 red 的类型就是 Color

image-20220910143613392

也可以自定义枚举成员的值:

enum Color {
    red = 5,
    green,
    blue
}

后面没有定义值的成员,将从 6 开始计算。

注意枚举和对象的区别,对象的 keyvalue 中间使用冒号 : 分割,枚举使用的赋值 =

枚举值除了是数字类型,还可以定义为其他类型,比如字符串类型:

enum Color {
    red = 'red',
    green = 'green',
    blue = 'blue'
}

let green = Color.green;
console.log(green); // 'green'

小结

本文介绍了Typescript 的数组类型和元组类型,声明数组有两种方式,可以声明为静态类型的数组,也可以使用 any 声明为动态类型的数组。元组是一种特殊的数组,特点是长度固定,元素类型固定。然后介绍了 Typescript 的枚举类型,枚举类型在开发中经常使用,配合 switch 语句十分强大。

目录
相关文章
|
4月前
|
JavaScript 前端开发
总结TypeScript 的一些知识点:TypeScript Array(数组)(下)
一个数组的元素可以是另外一个数组,这样就构成了多维数组(Multi-dimensional Array)。
|
4月前
|
存储 JavaScript 前端开发
总结TypeScript 的一些知识点:TypeScript Array(数组)(上)
数组对象是使用单独的变量名来存储一系列的值。
|
4月前
|
JavaScript
​​​​Typescript 接口 和继承 数组处理
ts的基础数据类型,可用来处理一般数据,但是碰到后台传入的复杂对象数组的时候,我们可以使用ts中的接口来定义处理
55 0
|
1月前
|
JavaScript 前端开发 安全
TypeScript中的枚举类型有哪些优点和缺点
【8月更文挑战第4天】 TypeScript中的枚举类型有哪些优点和缺点
38 3
|
1月前
|
JavaScript 安全 前端开发
TypeScript中的枚举类型有哪些应用场景
【8月更文挑战第4天】TypeScript中的枚举类型有哪些应用场景
47 5
|
2月前
|
JavaScript 前端开发 索引
TypeScript 的数组类型
TypeScript 的数组类型
32 1
|
3月前
|
JavaScript 网络架构 存储
6.【TypeScript 教程】TypeScript 元组(Tuple)
6.【TypeScript 教程】TypeScript 元组(Tuple)
24 2
|
3月前
|
JavaScript 安全
TypeScript类型(数字、字符串、字面量、数组、元组、枚举、对象等)
TypeScript类型(数字、字符串、字面量、数组、元组、枚举、对象等)
|
3月前
|
JavaScript 前端开发 C#
TypeScript 元组 枚举
TypeScript 元组 枚举
|
4月前
|
存储 JavaScript 前端开发
【HarmonyOS 4.0 应用开发实战】TypeScript入门之元组详讲
【HarmonyOS 4.0 应用开发实战】TypeScript入门之元组详讲
84 0