# 内置工具类型

URL: https://caijiao.org/ts/part2/utility-types
Source: docs/ts/part2/utility-types.md
Description: TypeScript 提供的内置工具类型，涵盖了常用的类型操作工具，帮助开发者高效地处理类型转换和操作。

[TypeScript](/ts/) 提供了一系列内置工具类型，用于对类型进行转换和操作。这些工具类型简化了常见的类型处理任务。

## `Partial<T>`

`Partial<T>` 用于构造一个类型，其中的所有属性都是可选的。

```ts
type Person = { name: string; age: number };
type PartialPerson = Partial<Person>; // { name?: string; age?: number }
```

## `Required<T>`

`Required<T>` 用于构造一个类型，其中的所有属性都是必需的。

```ts
type Person = { name: string; age?: number };
type RequiredPerson = Required<Person>; // { name: string; age: number }
```

## `Pick\<T, K>`

`Pick<T, K>` 用于从一个类型中选择出一些属性，构造一个新类型。

```ts
type Person = { name: string; age: number; gender: string };
type PersonNameAndAge = Pick<Person, "name" | "age">; // { name: string; age: number }
```

## `Omit\<T, K>`

`Omit<T, K>` 用于从一个类型中删除一些属性，构造一个新类型。

```ts
type Person = { name: string; age: number; gender: string };
type PersonWithoutGender = Omit<Person, "gender">; // { name: string; age: number }
```

## `Record\<K, T>`

`Record<K, T>` 用于构造一个对象类型，其中 `K` 表示对象的键，`T` 表示每个键对应的值的类型。

```ts
type Role = "admin" | "user" | "guest";
type Permissions = Record<Role, boolean>; // { admin: boolean; user: boolean; guest: boolean }
```

## `ReturnType<T>`

`ReturnType<T>` 用于获取函数类型 `T` 的返回值类型。

```ts
type MyFunction = () => string;
type MyReturnType = ReturnType<MyFunction>; // string
```

## `Parameters<T>`

`Parameters<T>` 用于获取函数类型 `T` 的参数类型组成的元组类型。

```ts
type MyFunction = (x: number, y: string) => void;
type MyParameters = Parameters<MyFunction>; // [number, string]
```

这些工具类型大大简化了常见的类型转换和操作，使得代码更加简洁和易于维护。通过灵活使用这些内置类型，开发者能够高效地处理类型的变化和转换。
