Skip to content

Commit 8376e15

Browse files
committed
feat: translate Keyof Type Operator.md in zh-CN
1 parent 45c3cd4 commit 8376e15

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
title: Keyof 类型运算符
3+
layout: docs
4+
permalink: /zh/docs/handbook/2/keyof-types.html
5+
oneline: "在类型上下文中使用keyof运算符"
6+
---
7+
8+
## `keyof` 类型运算符
9+
10+
`keyof` 操作符接受一个对象类型,并且会将该对象的key值进行联合生成一个由字符串或数字组成的文字串。
11+
以下类型 P 与类型 "x" | "y" 是等价的:
12+
13+
```ts twoslash
14+
type Point = { x: number; y: number };
15+
type P = keyof Point;
16+
// ^?
17+
```
18+
19+
如果类型具有`string``number`的索引签名,`keyof`则将返回索引的类型:
20+
21+
```ts twoslash
22+
type Arrayish = { [n: number]: unknown };
23+
type A = keyof Arrayish;
24+
// ^?
25+
26+
type Mapish = { [k: string]: boolean };
27+
type M = keyof Mapish;
28+
// ^?
29+
```
30+
31+
值得注意的是,上面例子中, `M``string | number` -- 这是因为JavaScript中对象的键始终会强制转换成字符串,所以 `obj[0]``obj["0"]`是等价的。
32+
33+
`keyof`与映射类型结合使用时,将变得特别有用,稍后我们会详细了解。

0 commit comments

Comments
 (0)