学习呦
14 10月 2025 4 min read

程序类型

Written by 米豆

此类型是ts内部定义的

Record

定义:快速创建一个对象类型,接受两个参数,一个指定对象类型的key一个指定val

/**
* Construct a type with a set of properties K of type T
*/
type Record<K extends keyof any, T> = {
[P in K]: T;
};

举例

type Coord = Record<'x' | 'y', number>;

// 等同于
type Coord = {
x: number;
y: number;
}

Partial

定义:将类型定义的所有属性设置为可选

/**
* Make all properties in T optional
*/
type Partial<T> = {
[P in keyof T]?: T[P];
};

举例

type Coord = Partial<Record<'x' | 'y', number>>;

// 等同于
type Coord = {
x?: number;
y?: number;
}

Readonly

定义:设置类型里的属性为可读

/**
* Make all properties in T readonly
*/
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};

例子

type Coord = Readonly<Record<'x' | 'y', number>>;

// 等同于
type Coord = {
readonly x: number;
readonly y: number;
}

Pick

定义:选出一些属性,组合成新的类型定义

/**
* From T, pick a set of properties whose keys are in the union K
*/
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};

🌰

type Coord = Record<'x' | 'y', number>;
type CoordX = Pick<Coord, 'x'>;

// 等用于
type CoordX = {
x: number;
}
↑