Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 7a4164f

Browse files
committedAug 23, 2023
docs(tuple): modify text
1 parent 22ec0da commit 7a4164f

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed
 

‎docs/tuple.md

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
元组(tuple)是 TypeScript 特有的数据类型,JavaScript 没有单独区分这种类型。它表示成员类型可以自由设置的数组,即数组的各个成员的类型可以不同。
66

7-
元组必须明确声明每个成员的类型
7+
由于成员的类型可以不一样,所以元组必须明确声明每个成员的类型
88

99
```typescript
1010
const s:[string, string, boolean]
@@ -13,24 +13,26 @@ const s:[string, string, boolean]
1313

1414
上面示例中,元组`s`的前两个成员的类型是`string`,最后一个成员的类型是`boolean`
1515

16-
元组类型的写法,与上一章的数组有一个重大差异。数组的成员类型写在方括号外面(`number[]`),元组的成员类型是写在方括号里面(`[number]`)。
17-
18-
TypeScript 的区分方法是,成员类型写在方括号里面的就是元组,写在外面的就是数组。
16+
元组类型的写法,与上一章的数组有一个重大差异。数组的成员类型写在方括号外面(`number[]`),元组的成员类型是写在方括号里面(`[number]`)。TypeScript 的区分方法就是,成员类型写在方括号里面的就是元组,写在外面的就是数组。
1917

2018
```typescript
21-
let a:[number] = [1];
19+
// 数组
20+
let a:number[] = [1];
21+
22+
// 元组
23+
let t:[number] = [1];
2224
```
2325

24-
上面示例中,变量`a`是一个元组,只有一个成员,类型是`number`
26+
上面示例中,变量`a``t`的值都是`[1]`,但是它们的类型是不一样的。`a`是一个数组,成员类型`number`写在方括号外面;`t`是一个元组,成员类型`number`写在方括号里面
2527

2628
使用元组时,必须明确给出类型声明(上例的`[number]`),不能省略,否则 TypeScript 会把一个值自动推断为数组。
2729

2830
```typescript
29-
// a 的类型为 (number | boolean)[]
31+
// a 的类型被推断为 (number | boolean)[]
3032
let a = [1, true];
3133
```
3234

33-
上面示例中,变量`a`的值其实是一个元组,但是 TypeScript 会将其推断为一个联合类型的数组,即`a`的类型为`(number | boolean)[]`
35+
上面示例中,变量`a`的值其实是一个元组,但是 TypeScript 会将其推断为一个联合类型的数组,即`a`的类型为`(number | boolean)[]`所以,元组必须显式给出类型声明。
3436

3537
元组成员的类型可以添加问号后缀(`?`),表示该成员是可选的。
3638

@@ -77,15 +79,15 @@ const b:NamedNums = ['B', 1, 2, 3];
7779

7880
上面示例中,元组类型`NamedNums`的第一个成员是字符串,后面的成员使用扩展运算符来展开一个数组,从而实现了不定数量的成员。
7981

80-
扩展运算符用在元组的任意位置都可以,但是它后面只能是数组或元组
82+
扩展运算符(`...`)用在元组的任意位置都可以,它的后面只能是一个数组或元组
8183

8284
```typescript
8385
type t1 = [string, number, ...boolean[]];
8486
type t2 = [string, ...boolean[], number];
8587
type t3 = [...boolean[], string, number];
8688
```
8789

88-
上面示例中,扩展运算符分别在元组的尾部、中部和头部。
90+
上面示例中,扩展运算符分别在元组的尾部、中部和头部`...`的后面是一个数组`boolean[]`
8991

9092
如果不确定元组成员的类型和数量,可以写成下面这样。
9193

@@ -95,6 +97,20 @@ type Tuple = [...any[]];
9597

9698
上面示例中,元组`Tuple`可以放置任意数量和类型的成员。但是这样写,也就失去了使用元组和 TypeScript 的意义。
9799

100+
元组的成员可以添加成员名,这个成员名是说明性的,可以任意取名,没有实际作用。
101+
102+
```typescript
103+
type Color = [
104+
red: number,
105+
green: number,
106+
blue: number
107+
];
108+
109+
const c:Color = [255, 255, 255];
110+
```
111+
112+
上面示例中,类型`Color`是一个元组,它有三个成员。每个成员都有一个名字,写在具体类型的前面,使用冒号分隔。这几个名字可以随便取,没有实际作用,只是用来说明每个成员的含义。
113+
98114
元组可以通过方括号,读取成员类型。
99115

100116
```typescript

0 commit comments

Comments
 (0)
Please sign in to comment.