Skip to content

Commit 45ea68c

Browse files
committed
docs: update
1 parent 6f10866 commit 45ea68c

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

docs/documentation/zh/handbook-v2/Everyday Types.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ permalink: /zh/docs/handbook/2/everyday-types.html
55
oneline: "The language primitives."
66
---
77

8-
在本章中,我们将介绍一些在 JavaScript 代码中最常见的值类型,并说明在 TypeScript 中描述这些类型相应的方法。
8+
在本章中,我们将介绍一些在 JavaScript 代码中最常见的值的类型,并说明在 TypeScript 中描述这些类型相应的方法。
99
这不是一个详尽的列表,后续章节将描述命名和使用其他类型的更多方法。
1010

1111
类型还可以出现在许多 _地方_ ,而不仅仅是类型注释。
@@ -14,7 +14,7 @@ oneline: "The language primitives."
1414
我们将首先回顾一下你在编写 JavaScript 或 TypeScript 代码时可能遇到的最基本和最常见的类型。
1515
这些将在稍后形成更复杂类型的核心构建块。
1616

17-
## The primitives: `string`, `number`, and `boolean`
17+
## 基本类型:`string``number`,和 `boolean`
1818

1919
JavaScript has three very commonly used [primitives](https://developer.mozilla.org/en-US/docs/Glossary/Primitive): `string`, `number`, and `boolean`.
2020
Each has a corresponding type in TypeScript.
@@ -309,10 +309,10 @@ function getFirstThree(x: number[] | string) {
309309
310310
## 类型别名
311311

312-
我们通过直接在类型注释中编写对象类型和联合类型来使用它们
313-
这很方便,但是通常希望多次使用同一类型并使用单独的名称引用它
312+
我们通过直接在类型注解中编写对象类型和联合类型来使用它们
313+
这很方便,但是常常会想要多次使用同一个类型,并且通过一个名称引用它
314314

315-
一个 _类型别名_ 正是 - 任何 _类型_ 的一个 _名称_
315+
_类型别名_ 正是如此 - 任意 _类型_ 的一个 _名称_
316316
类型别名的语法是:
317317

318318
```ts twoslash
@@ -330,7 +330,7 @@ function printCoord(pt: Point) {
330330
printCoord({ x: 100, y: 100 });
331331
```
332332

333-
实际上,你可以使用类型别名为任何类型命名,而不仅仅是对象类型
333+
实际上,不只是对象类型,你可以使用类型别名为任何类型命名
334334
例如,类型别名可以命名联合类型:
335335

336336
```ts twoslash
@@ -339,7 +339,7 @@ type ID = number | string;
339339

340340
请注意,别名 _只是_ 别名 - 你不能使用类型别名创建同一类型的不同“版本”。
341341
当你使用别名时,它与您编写的别名类型完全一样。
342-
换句话说,这段代码 _看起来_ 可能是非法的,但根据 TypeScript 来说是可以的,因为这两种类型都是同一类型的别名:
342+
换句话说,这段代码 _看起来_ 可能是非法的,但是对于 TypeScript 来说是正确的,因为这两种类型都是同一类型的别名:
343343

344344
```ts twoslash
345345
declare function getInput(): string;
@@ -383,7 +383,7 @@ TypeScript 只关心我们传递给 `printCoord` 的值的结构 - 它只关心
383383
### 类型别名和接口之间的区别
384384

385385
类型别名和接口非常相似,在大多数情况下你可以在它们之间自由选择。
386-
几乎所有的 `interface` 功能都可以在 `type` 中使用,关键区别在于不能重新打开类型以添加新的属性,而接口始终是可扩展的。
386+
几乎所有的 `interface` 功能都可以在 `type` 中使用,关键区别在于不能重新开放类型以添加新的属性,而接口始终是可扩展的。
387387

388388
<table class='full-width-table'>
389389
<tbody>
@@ -455,7 +455,7 @@ type Window = {
455455

456456
- 在 TypeScript 4.2 之前,类型别名命名 [_可能_ 会出现在错误消息中](/play?#code/PTAEGEHsFsAcEsA2BTATqNrLusgzngIYDm+oA7koqIYuYQJ56gCueyoAUCKAC4AWHAHaFcoSADMaQ0PCG80EwgGNkALk6c5C1EtWgAsqOi1QAb06groEbjWg8vVHOKcAvpokshy3vEgyyMr8kEbQJogAFND2YREAlOaW1soBeJAoAHSIkMTRmbbI8e6aPMiZxJmgACqCGKhY6ABGyDnkFFQ0dIzMbBwCwqIccabcYLyQoKjIEmh8kwN8DLAc5PzwwbLMyAAeK77IACYaQSEjUWZWhfYAjABMAMwALA+gbsVjoADqgjKESytQPxCHghAByXigYgBfr8LAsYj8aQMUASbDQcRSExCeCwFiIQh+AKfAYyBiQFgOPyIaikSGLQo0Zj-aazaY+dSaXjLDgAGXgAC9CKhDqAALxJaw2Ib2RzOISuDycLw+ImBYKQflCkWRRD2LXCw6JCxS1JCdJZHJ5RAFIbFJU8ADKC3WzEcnVZaGYE1ABpFnFOmsFhsil2uoHuzwArO9SmAAEIsSFrZB-GgAjjA5gtVN8VCEc1o1C4Q4AGlR2AwO1EsBQoAAbvB-gJ4HhPgB5aDwem-Ph1TCV3AEEirTp4ELtRbTPD4vwKjOfAuioSQHuDXBcnmgACC+eCONFEs73YAPGGZVT5cRyyhiHh7AAON7lsG3vBggB8XGV3l8-nVISOgghxoLq9i7io-AHsayRWGaFrlFauq2rg9qaIGQHwCBqChtKdgRo8TxRjeyB3o+7xAA),有时代替等效的匿名类型(可能需要也可能不需要)。接口在错误消息中将始终被命名。
457457
- 类型别名不能参与 [声明合并,但接口可以](/play?#code/PTAEEEDtQS0gXApgJwGYEMDGjSfdAIx2UQFoB7AB0UkQBMAoEUfO0Wgd1ADd0AbAK6IAzizp16ALgYM4SNFhwBZdAFtV-UAG8GoPaADmNAcMmhh8ZHAMMAvjLkoM2UCvWad+0ARL0A-GYWVpA29gyY5JAWLJAwGnxmbvGgALzauvpGkCZmAEQAjABMAMwALLkANBl6zABi6DB8okR4Jjg+iPSgABboovDk3jjo5pbW1d6+dGb5djLwAJ7UoABKiJTwjThpnpnGpqPBoTLMAJrkArj4kOTwYmycPOhW6AR8IrDQ8N04wmo4HHQCwYi2Waw2W1S6S8HX8gTGITsQA)
458-
- 接口只能用于 [声明对象,不能重命名基本类型](/play?#code/PTAEAkFMCdIcgM6gC4HcD2pIA8CGBbABwBtIl0AzUAKBFAFcEBLAOwHMUBPQs0XFgCahWyGBVwBjMrTDJMAshOhMARpD4tQ6FQCtIE5DWoixk9QEEWAeV37kARlABvaqDegAbrmL1IALlAEZGV2agBfampkbgtrWwMAJlAAXmdXdy8ff0Dg1jZwyLoAVWZ2Lh5QVHUJflAlSFxROsY5fFAWAmk6CnRoLGwmILzQQmV8JmQmDzI-SOiKgGV+CaYAL0gBBdyy1KCQ-Pn1AFFplgA5enw1PtSWS+vCsAAVAAtB4QQWOEMKBuYVUiVCYvYQsUTQcRSBDGMGmKSgAAa-VEgiQe2GLgKQA).
458+
- 接口只能用于 [声明对象的形状,不能重命名基本类型](/play?#code/PTAEAkFMCdIcgM6gC4HcD2pIA8CGBbABwBtIl0AzUAKBFAFcEBLAOwHMUBPQs0XFgCahWyGBVwBjMrTDJMAshOhMARpD4tQ6FQCtIE5DWoixk9QEEWAeV37kARlABvaqDegAbrmL1IALlAEZGV2agBfampkbgtrWwMAJlAAXmdXdy8ff0Dg1jZwyLoAVWZ2Lh5QVHUJflAlSFxROsY5fFAWAmk6CnRoLGwmILzQQmV8JmQmDzI-SOiKgGV+CaYAL0gBBdyy1KCQ-Pn1AFFplgA5enw1PtSWS+vCsAAVAAtB4QQWOEMKBuYVUiVCYvYQsUTQcRSBDGMGmKSgAAa-VEgiQe2GLgKQA).
459459
- 接口名称将 [_始终_ 以其原始形式出现](/play?#code/PTAEGEHsFsAcEsA2BTATqNrLusgzngIYDm+oA7koqIYuYQJ56gCueyoAUCKAC4AWHAHaFcoSADMaQ0PCG80EwgGNkALk6c5C1EtWgAsqOi1QAb06groEbjWg8vVHOKcAvpokshy3vEgyyMr8kEbQJogAFND2YREAlOaW1soBeJAoAHSIkMTRmbbI8e6aPMiZxJmgACqCGKhY6ABGyDnkFFQ0dIzMbBwCwqIccabcYLyQoKjIEmh8kwN8DLAc5PzwwbLMyAAeK77IACYaQSEjUWY2Q-YAjABMAMwALA+gbsVjNXW8yxySoAADaAA0CCaZbPh1XYqXgOIY0ZgmcK0AA0nyaLFhhGY8F4AHJmEJILCWsgZId4NNfIgGFdcIcUTVfgBlZTOWC8T7kAJ42G4eT+GS42QyRaYbCgXAEEguTzeXyCjDBSAAQSE8Ai0Xsl0K9kcziExDeiQs1lAqSE6SyOTy0AKQ2KHk4p1V6s1OuuoHuzwArMagA) 在错误消息中,但 _只有_ 在按名称使用时才会出现。
460460

461461
在大多数情况下,你可以根据个人喜好进行选择,TypeScript 会告诉你它是否需要其他类型的声明。如果您想要启发式方法,可以使用 `interface` 直到你需要使用 `type` 中的功能。

docs/documentation/zh/handbook-v2/Type Manipulation/Conditional Types.md

+13-13
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ permalink: /zh/docs/handbook/2/conditional-types.html
55
oneline: "Create types which act like if statements in the type system."
66
---
77

8-
在大多数有用的程序的核心,我们必须根据输入做出决定
9-
JavaScript 程序也没有什么不同,但是考虑到值可以很容易地反思的事实,这些决定也是基于输入的类型。
8+
大多数有效程序的核心是,我们必须依据输入做出一些决定
9+
JavaScript 程序也是如此,但是由于值可以很容易地被内省,这些决定也是基于输入的类型。
1010
_条件类型_ 有助于描述输入和输出类型之间的关系。
1111

1212
```ts twoslash
@@ -24,7 +24,7 @@ type Example2 = RegExp extends Animal ? number : string;
2424
// ^?
2525
```
2626

27-
条件类型的形式看起来有点像 JavaScript 中的条件表达式(`条件 ? true 表达式 : false 表达式`):
27+
条件类型看起来有点像 JavaScript 中的条件表达式(`条件 ? true 表达式 : false 表达式`):
2828

2929
```ts twoslash
3030
type SomeType = any;
@@ -38,7 +38,7 @@ type Stuff =
3838

3939
`extends` 左边的类型可以赋值给右边的类型时,你将获得第一个分支("true" 分支)中的类型;否则你将获得后一个分支("false" 分支)中的类型。
4040

41-
从上面的例子中,条件类型可能看起来不会立即有用 - 我们可以告诉自己是否 `Dog extends Animal` 并选择 `number``string`
41+
从上面的例子中,条件类型可能不会立即显得很有用 - 我们可以告诉自己是否 `Dog extends Animal` 并选择 `number``string`
4242
但是条件类型的威力来自于将它们与泛型一起使用。
4343

4444
让我们以下面的 `createLabel` 函数为例:
@@ -64,7 +64,7 @@ function createLabel(nameOrId: string | number): IdLabel | NameLabel {
6464
1. 如果一个库不得不在其 API 中一遍又一遍地做出相同的选择,这就变得很麻烦。
6565
2. 我们必须创建三个重载:一种用于我们 _确定_ 类型时的每种情况(一个用于 `string`,一个用于 `number`),一个用于最一般的情况(接受一个 `string | number`)。对于 `createLabel` 可以处理的每个新类型,重载的数量都会呈指数增长。
6666

67-
相反,我们可以将该逻辑编码为条件类型
67+
相反,我们可以将该逻辑转换为条件类型
6868

6969
```ts twoslash
7070
interface IdLabel {
@@ -118,8 +118,8 @@ let c = createLabel(Math.random() ? "hello" : 42);
118118
type MessageOf<T> = T["message"];
119119
```
120120

121-
在本例中,TypeScript 错误是因为 `T` 不知道有一个名为 `message` 的属性。
122-
我们可以限制 `T`,TypeScript 也不会再抱怨了:
121+
在本例中,TypeScript 产生错误是因为不知道 `T` 有一个名为 `message` 的属性。
122+
我们可以约束 `T`,TypeScript 也不会再抱怨了:
123123

124124
```ts twoslash
125125
type MessageOf<T extends { message: unknown }> = T["message"];
@@ -136,7 +136,7 @@ type EmailMessageContents = MessageOf<Email>;
136136
// ^?
137137
```
138138

139-
然而,如果我们希望 `MessageOf` 采用任何类型,并且在 `message` 属性不可用的情况下缺省为 `never` 之类的类型,该怎么办呢
139+
然而,如果我们希望 `MessageOf` 接受任何类型,并且在 `message` 属性不可用的情况下默认为 `never` 之类的类型,我们应该怎么做呢
140140
我们可以通过移出约束并引入条件类型来实现这一点:
141141

142142
```ts twoslash
@@ -178,7 +178,7 @@ type Num = Flatten<number>;
178178

179179
### 在条件类型中推断
180180

181-
我们只是发现自己使用条件类型来应用约束,然后提取出类型。
181+
我们发现自己使用条件类型来应用约束,然后提取出类型。
182182
这最终成为一种非常常见的操作,条件类型使其变得更容易。
183183

184184
条件类型为我们提供了一种使用 `infer` 关键字从 true 分支中与之进行比较的类型中进行推断的方法。
@@ -209,7 +209,7 @@ type Bools = GetReturnType<(a: boolean, b: boolean) => boolean[]>;
209209
// ^?
210210
```
211211

212-
当从具有多个调用签名的类型(如重载函数的类型)进行推断时,将从 _最后一个_ 签名进行推断(这大概是最允许的捕获所有的情况)。无法基于参数类型列表执行重载解析
212+
当从具有多个调用签名的类型(如重载函数的类型)进行推断时,将从 _最后一个_ 签名进行推断(这也许是最宽松的万能情况)。无法基于参数类型列表执行重载决议
213213

214214
```ts twoslash
215215
declare function stringOrNum(x: string): number;
@@ -222,14 +222,14 @@ type T1 = ReturnType<typeof stringOrNum>;
222222

223223
## 分配条件类型
224224

225-
当条件类型作用于泛型类型时,它们在给定联合类型时成为 _分配类型_
225+
当传入的类型参数为联合类型时,他们会被 _分配类型_
226226
以下面的例子为例:
227227

228228
```ts twoslash
229229
type ToArray<Type> = Type extends any ? Type[] : never;
230230
```
231231

232-
如果我们将联合类型插入 `ToArray`,则条件类型将应用于该联合类型的每个成员。
232+
如果我们将联合类型传入 `ToArray`,则条件类型将应用于该联合类型的每个成员。
233233

234234
```ts twoslash
235235
type ToArray<Type> = Type extends any ? Type[] : never;
@@ -255,7 +255,7 @@ type StrArrOrNumArr =
255255
ToArray<string> | ToArray<number>;
256256
```
257257

258-
所以我们只剩下
258+
所以我们得到
259259

260260
```ts twoslash
261261
type StrArrOrNumArr =

0 commit comments

Comments
 (0)