TypeScript 高级类型

工具类型源码

type Partial<T> = { [P in keyof T]?: T[P] }
type Pick<T, K extends keyof T> = { [P in K]: T[P] }

条件类型与 infer

type Return<T> = T extends (...a: any[]) => infer R ? R : never

实战

构造 API 层泛型 Result 与 PageQuery,大幅减少样板代码。