引用类型
在 TypeScript 中,引用类型(也称为复合类型)是指那些不是原始数据类型的类型,它们包括对象、数组、函数等。这些类型是通过引用访问的,而不是通过值访问。
对象类型
object
类型在 TypeScript 中用于表示任何非原始类型(即除了 number
、string
、boolean
、null
、undefined
、symbol
和 bigint
之外的所有类型)。
1function create(val: object) {}
2
3create({})
4create(function(){})
5create([])
数组类型
在 TypeScript 中,数组是一种常用的数据结构,用于存储同一类型的多个值。TypeScript 提供了两种方式来定义数组的类型。
使用 [] 表示法
你可以直接在元素类型后面加上 []
来定义一个数组。这是最直观且常用的方式。
1// 类型注解写法
2let arr1: number[] = [1, 2, 3]
3
4let arr2: { a: number; b: string }[] = [
5 { a: 1, b: "aa" },
6 { a: 2, b: "bb" },
7]
这种方式简洁明了,易于理解,特别适合当你已经知道数组中元素的具体类型时使用。
使用 Array<元素类型> 泛型
使用数组泛型,Array<元素类型>
:
1// 泛型写法
2let arr3: Array<number> = [1, 2, 3]
3
4let arr4: Array<{ a: number; b: string }> = [
5 { a: 1, b: "aa" },
6 { a: 2, b: "bb" },
7]
两种方式在功能上是等价的,选择哪一种主要取决于个人偏好和具体的使用场景。通常,[]
表示法更受欢迎,因为它更简洁且易于理解。
元组类型
在 TypeScript 中,元组(Tuple)是一种允许你表示一个已知元素数量和类型的数组,各元素的类型不必相同。
元组的特性
-
类型固定:元组的类型在定义时就固定下来,每个位置的元素类型是已知的。
-
索引访问:可以通过索引来访问元组中的元素,TypeScript 会根据索引推断出元素的类型。
-
长度固定:元组的长度是固定的,一旦定义就不能添加或删除元素。
- 元组在新增内容的时候,不能添加额外类型的值,只能是已有类型,而且增加后无法访问(安全问题)
-
可选元素:元组可以包含可选元素,通过在类型后面加问号 ?
来表示。
1export {}; // 防止变量污染全局命名空间
2
3// 定义一个元组,包含一个字符串和一个可选的数字
4const user: [string, number?] = ['dancy'];
5
6// 访问元组中的元素
7const name: string = user[0];
8console.log(name); // 输出: dancy
9
10// 访问可选元素,需要进行类型检查或断言
11if (user.length > 1 && typeof user[1] === 'number') {
12 const age: number = user[1];
13 console.log(age);
14} else {
15 console.log('Age is not provided');
16}
函数类型
接口
类