diff --git a/docs/typescript.md b/docs/typescript.md index a199912..23718f2 100644 --- a/docs/typescript.md +++ b/docs/typescript.md @@ -1312,13 +1312,16 @@ type SomeBigInt = "100" extends `${infer U extends bigint}` ? U : never; ### keyof 取 interface 的键 ```ts -interface Point { - x: number; - y: number; -} +interface Point { x: number; y: number; } // type keys = "x" | "y" type keys = keyof Point; + +type Arrayish = { + [n: number]: unknown; +}; +type A = keyof Arrayish; +// type A = number ``` ### 索引签名 @@ -1394,7 +1397,8 @@ const redComponent = palette.red.at(0) 不使用的情况下: ```ts -const errorMap: Map = new Map() +const errorMap: Map + = new Map() // 或者使用 type 定义别名 type ErrorMapType = Map ``` @@ -1423,7 +1427,8 @@ function makeHammerBox(hammer: Hammer) { return makeBox(hammer); } // or... -const makeWrenchBox: (wrench: Wrench) => Box = makeBox; +const makeWrenchBox: (wrench: Wrench) + => Box = makeBox; ``` 使用: @@ -1446,6 +1451,28 @@ export interface FancyOption { } ``` +### 获取数组元素的类型 + +```ts +const MyArray = [ + { name: "Alice", age: 15 }, + { name: "Bob", age: 23 }, + { name: "Eve", age: 38 }, +]; + +type Person = typeof MyArray[number]; +// type Person = { +// name: string; +// age: number; +// } + +type Age = typeof MyArray[number]["age"]; +// type Age = number + +type Age2 = Person["age"]; +// type Age2 = number +``` + .d.ts 模版 ---