Skip to content

Commit

Permalink
文档: 📝 add 08-ts-utility_types docs
Browse files Browse the repository at this point in the history
  • Loading branch information
zhuba-Ahhh committed Apr 6, 2024
1 parent 3c04eb5 commit 8c866b2
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
pnpm-lock.yaml


# Diagnostic reports (https://nodejs.org/api/report.html)
Expand Down
39 changes: 39 additions & 0 deletions src/08-ts-utility_types/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
[utility-types](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)

TypeScript 提供了一系列实用的工具类型(utility types),以便于进行常见的类型转换。这些工具类型是全局可用的,可以帮助在工作中更有效地处理类型。

以下是一些常用的 TypeScript 工具类型及其用途:

1. **Awaited<Type>**: 用于模拟 `async` 函数中的 `await` 操作或 `Promise``.then()` 方法,递归地展开 `Promise`

2. **Partial<Type>**: 构造一个类型,将 `Type` 中的所有属性设置为可选的。这个工具类型会返回一个代表给定类型所有子集的类型。

3. **Required<Type>**: 构造一个类型,将 `Type` 中的所有属性设置为必需的。这是 `Partial` 类型的相反操作。

4. **Readonly<Type>**: 构造一个类型,将 `Type` 中的所有属性设置为 `readonly`,意味着构造类型中的属性不能被重新赋值。

5. **Record<Keys, Type>**: 构造一个对象类型,其属性键是 `Keys`,属性值是 `Type`。这个工具类型可以用来将类型的属性映射到另一种类型。

6. **Pick<Type, Keys>**: 从 `Type` 中选取属性集 `Keys`(字符串字面量或字符串字面量的联合)构造一个类型。

7. **Omit<Type, Keys>**: 从 `Type` 中选取所有属性,然后移除 `Keys`(字符串字面量或字符串字面量的联合)。

8. **Exclude<UnionType, ExcludedMembers>**: 从 `UnionType` 中排除所有可以赋值给 `ExcludedMembers` 的联合成员。

9. **Extract<UnionType, Union>**: 从 `Type` 中提取所有可以赋值给 `Union` 的联合成员。

10. **NonNullable<Type>**: 从 `Type` 中排除 `null``undefined`

11. **Parameters<Type>**: 从函数类型 `Type` 的参数中构造一个元组类型。

12. **ConstructorParameters<Type>**: 从构造函数类型中构造一个元组或数组类型。

13. **ReturnType<Type>**: 构造一个类型,包含函数 `Type` 的返回类型。

14. **InstanceType<Type>**: 构造一个类型,包含 `Type` 中构造函数函数的实例类型。

15. **ThisParameterType<Type>**: 提取函数类型的 `this` 参数的类型。

16. **OmitThisParameter<Type>**: 从 `Type` 中移除 `this` 参数。

这些工具类型在 TypeScript 中非常有用,可以帮助创建更精确和可维护的类型定义。通过使用这些工具类型,可以更容易地处理复杂的类型操作,如解构、映射、过滤和转换。

0 comments on commit 8c866b2

Please sign in to comment.