object
@movk-repo/shared/types/object
AnyObject
表示一个任意键值对的对象。
ts
export type AnyObject = Record<string, any>
OmitByKey
从类型 T 中排除键 K。
ts
export type OmitByKey<T, K extends keyof T> = {
[P in keyof T as P extends K ? never : P]: T[P];
}
PickByKey
从类型 T 中挑选键 K。
ts
export type PickByKey<T, K extends keyof T> = {
[P in keyof T as P extends K ? P : never]: T[P];
}
RenameKeys
重命名类型 T 中的键。
ts
export type RenameKeys<T, Mapping extends { [K in keyof T]?: PropertyKey }> = {
[K in keyof T as K extends keyof Mapping ? Exclude<Mapping[K], undefined> : K]: T[K];
}
RequiredByKeys
将类型 T 中的键 K 设为必需。
ts
export type RequiredByKeys<T, K extends keyof T> = T & {
[P in K]-?: T[P];
}
PartialByKeys
将类型 T 中的键 K 设为可选。
ts
export type PartialByKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
ReadonlyByKeys
将类型 T 中的键 K 设为只读。
ts
export type ReadonlyByKeys<T, K extends keyof T> = T & {
readonly [P in K]: T[P];
}
MutableByKeys
将类型 T 中的键 K 设为可变。
ts
export type MutableByKeys<T, K extends keyof T> = {
-readonly [P in K]: T[P];
} & Omit<T, K>
UnionToIntersection
将联合类型 U 转换为交叉类型。
ts
export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? {
[K in keyof I]: I[K];
} : never
FirstParam
获取类型 T 中键 K 的第一个参数类型。
ts
export type FirstParam<T, K extends keyof T> = T[K] extends [infer P, ...any[]] ? P : never
FirstParameter
获取函数类型 T 的第一个参数类型。
ts
export type FirstParameter<T> = T extends (arg: infer P, ...args: any[]) => any ? P : undefined