diff --git a/.gitignore b/.gitignore index 6a10ffc..1642dd2 100644 --- a/.gitignore +++ b/.gitignore @@ -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) diff --git a/src/08-ts-utility_types/README.md b/src/08-ts-utility_types/README.md new file mode 100644 index 0000000..97e8b89 --- /dev/null +++ b/src/08-ts-utility_types/README.md @@ -0,0 +1,39 @@ +[utility-types](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type) + +TypeScript 提供了一系列实用的工具类型(utility types),以便于进行常见的类型转换。这些工具类型是全局可用的,可以帮助在工作中更有效地处理类型。 + +以下是一些常用的 TypeScript 工具类型及其用途: + +1. **Awaited**: 用于模拟 `async` 函数中的 `await` 操作或 `Promise` 的 `.then()` 方法,递归地展开 `Promise`。 + +2. **Partial**: 构造一个类型,将 `Type` 中的所有属性设置为可选的。这个工具类型会返回一个代表给定类型所有子集的类型。 + +3. **Required**: 构造一个类型,将 `Type` 中的所有属性设置为必需的。这是 `Partial` 类型的相反操作。 + +4. **Readonly**: 构造一个类型,将 `Type` 中的所有属性设置为 `readonly`,意味着构造类型中的属性不能被重新赋值。 + +5. **Record**: 构造一个对象类型,其属性键是 `Keys`,属性值是 `Type`。这个工具类型可以用来将类型的属性映射到另一种类型。 + +6. **Pick**: 从 `Type` 中选取属性集 `Keys`(字符串字面量或字符串字面量的联合)构造一个类型。 + +7. **Omit**: 从 `Type` 中选取所有属性,然后移除 `Keys`(字符串字面量或字符串字面量的联合)。 + +8. **Exclude**: 从 `UnionType` 中排除所有可以赋值给 `ExcludedMembers` 的联合成员。 + +9. **Extract**: 从 `Type` 中提取所有可以赋值给 `Union` 的联合成员。 + +10. **NonNullable**: 从 `Type` 中排除 `null` 和 `undefined`。 + +11. **Parameters**: 从函数类型 `Type` 的参数中构造一个元组类型。 + +12. **ConstructorParameters**: 从构造函数类型中构造一个元组或数组类型。 + +13. **ReturnType**: 构造一个类型,包含函数 `Type` 的返回类型。 + +14. **InstanceType**: 构造一个类型,包含 `Type` 中构造函数函数的实例类型。 + +15. **ThisParameterType**: 提取函数类型的 `this` 参数的类型。 + +16. **OmitThisParameter**: 从 `Type` 中移除 `this` 参数。 + +这些工具类型在 TypeScript 中非常有用,可以帮助创建更精确和可维护的类型定义。通过使用这些工具类型,可以更容易地处理复杂的类型操作,如解构、映射、过滤和转换。 \ No newline at end of file