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 52ae89a

Browse files
committedJul 16, 2023
docs: finish chapter Array
1 parent 5ca2ceb commit 52ae89a

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed
 

‎chapters.yml

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
- basic.md: 基本用法
33
- any.md: any 类型,unknown 类型,never 类型
44
- types.md: 类型系统
5+
- array.md: 数组

‎docs/array.md

+8-9
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ TypeScript 数组有一个根本特征:所有成员的类型必须相同,但
1414
let arr:number[] = [1, 2, 3];
1515
```
1616

17-
上面示例中,数组`arr`的类型是`number[]`,其中`number`表示成员类型是`number`
17+
上面示例中,数组`arr`的类型是`number[]`,其中`number`表示数组成员类型是`number`
1818

1919
如果数组成员的类型比较复杂,可以写在圆括号里面。
2020

@@ -26,7 +26,7 @@ let arr:(number|string)[];
2626

2727
这个例子里面的圆括号是必须的,否则因为竖杠(`|`)的优先级低于`[]`,TypeScript 会把`number|string[]`理解成`number``string[]`的联合类型。
2828

29-
如果数组成员可以是任意类型,则写成`any[]`。当然,这种写法是应该避免的。
29+
如果数组成员可以是任意类型,写成`any[]`。当然,这种写法是应该避免的。
3030

3131
```typescript
3232
let arr:any[];
@@ -73,7 +73,7 @@ arr // [1, 2]
7373

7474
上面示例中,数组增加成员或减少成员,都是可以的。
7575

76-
正是由于成员数量可以动态变化,所以 TypeScript 不会对数组边界进行检查,如果越界访问数组并不会报错
76+
正是由于成员数量可以动态变化,所以 TypeScript 不会对数组边界进行检查,越界访问数组并不会报错
7777

7878
```typescript
7979
let arr:number[] = [1, 2, 3];
@@ -98,13 +98,11 @@ type Names = string[];
9898
type Name = Names[number]; // string
9999
```
100100

101-
上面示例中,`Names[number]`表示元组`Names`所有数值索引的成员类型,所以返回`string`
101+
上面示例中,`Names[number]`表示数组`Names`所有数值索引的成员类型,所以返回`string`
102102

103103
## 数组的类型推断
104104

105-
如果数组变量没有声明类型,TypeScript 就会推断数组成员的类型。
106-
107-
这时,推断行为会因为值的不同,而有所不同。
105+
如果数组变量没有声明类型,TypeScript 就会推断数组成员的类型。这时,推断行为会因为值的不同,而有所不同。
108106

109107
如果变量的初始值是空数组,那么 TypeScript 会推断数组类型是`any[]`
110108

@@ -150,9 +148,9 @@ arr[0] = 2;
150148

151149
上面示例中,修改`const`命令声明的数组的成员是允许的。
152150

153-
但是,很多时候确实有声明只读数组的需求,即不允许变动数组成员。
151+
但是,很多时候确实有声明为只读数组的需求,即不允许变动数组成员。
154152

155-
TypeScript 允许声明只读数组,方法是在在数组类型前面加上`readonly`关键字。
153+
TypeScript 允许声明只读数组,方法是在数组类型前面加上`readonly`关键字。
156154

157155
```typescript
158156
const arr:readonly number[] = [0, 1];
@@ -232,3 +230,4 @@ var multi:number[][] =
232230
```
233231

234232
上面示例中,变量`multi`的类型是`number[][]`,表示它是一个二维数组,最底层的数组成员类型是`number`
233+

‎docs/types.md

+2
Original file line numberDiff line numberDiff line change
@@ -768,3 +768,5 @@ a = b; // 报错
768768

769769
上面示例中,`hi``string`的子类型,`string``hi`的父类型。所以,变量`a`可以赋值给变量`b`,但是反过来就会报错。
770770

771+
之所以有这样的规则,是因为子类型继承了父类型的所有特征,所以可以用在父类型的场合。但是,子类型还可能有一些父类型没有的特征,所以父类型不能用在子类型的场合。
772+

0 commit comments

Comments
 (0)
Please sign in to comment.