高级类型(TypeScript)

高级类型是 TypeScript 类型系统的强大特性,支持更复杂的类型操作和抽象。

联合类型与交叉类型

// 联合类型:可以是其中之一
type ID = string | number;
 
// 交叉类型:合并多个类型
type Extended = Base & Extra;

映射类型

type Readonly<T> = {
  readonly [P in keyof T]: T[P];
};
 
type Partial<T> = {
  [P in keyof T]?: T[P];
};

条件类型

type IsString<T> = T extends string ? true : false;

工具类型

TypeScript 内置的工具类型:

工具类型说明示例备注
Partial<T>所有属性可选Partial<User>{ id?: number; name?: string }
Required<T>所有属性必需Required<User>{ id: number; name: string }
Readonly<T>所有属性只读Readonly<User>{ readonly id: number }
Pick<T, K>选择属性Pick<User, 'id' | 'name'>只保留指定属性
Omit<T, K>排除属性Omit<User, 'password'>排除指定属性
Record<K, T>构造对象类型Record<string, number>{ [key: string]: number }
Exclude<T, U>排除类型Exclude<'a' | 'b', 'a'>结果为 'b'
Extract<T, U>提取类型Extract<'a' | 'b', 'a'>结果为 'a'
NonNullable<T>排除 null/undefinedNonNullable<string | null>结果为 string
ReturnType<T>获取函数返回类型ReturnType<typeof fn>获取返回值类型
Parameters<T>获取函数参数类型Parameters<typeof fn>获取参数元组类型
InstanceType<T>获取构造函数实例类型InstanceType<typeof Class>获取实例类型

关联