UNPKG

arayts

Version:

让 TypeScript 开发如丝般顺滑。ArayTS 提供了一套高效、优雅的算法工具集,包含常用的数据结构与算法实现,帮助开发者轻松构建可靠的应用程序。

44 lines 1.88 kB
/** * 类型工具集合 */ export type UnwrapPromise<T> = T extends Promise<infer U> ? U : T; export type Optional<T> = { [P in keyof T]?: T[P]; }; export type Required<T> = { [P in keyof T]-?: T[P]; }; export type Readonly<T> = { readonly [P in keyof T]: T[P]; }; export type ReturnTypeOf<T extends (...args: any) => any> = ReturnType<T>; export type ArrayElement<T extends readonly any[]> = T extends readonly (infer U)[] ? U : never; export type Merge<T extends object, U extends object> = Omit<T, keyof U> & U; export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; export type NonNullableProperties<T> = { [P in keyof T]: NonNullable<T[P]>; }; export type Pick<T, K extends keyof T> = { [P in K]: T[P]; }; export type Exclude<T, U> = T extends U ? never : T; export type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never; export type MethodsOf<T> = { [P in keyof T]: T[P] extends Function ? P : never; }[keyof T]; export type KeysOf<T> = keyof T; export type ValuesOf<T> = T[keyof T]; export type Record<K extends keyof any, T> = { [P in K]: T; }; export type UnionToTuple<T> = UnionToIntersection<T extends any ? () => T : never> extends () => infer R ? [...UnionToTuple<Exclude<T, R>>, R] : []; export type PublicProperties<T> = Pick<T, keyof T>; export type NonNullable<T> = T extends null | undefined ? never : T; export type StringLiteral<T extends string> = T; export type DeepUnwrapPromise<T> = T extends Promise<infer U> ? DeepUnwrapPromise<U> : T; export type Literal<T extends string | number | boolean> = T; export type TypedEventEmitter<T> = { on<K extends keyof T>(event: K, listener: (data: T[K]) => void): void; emit<K extends keyof T>(event: K, data: T[K]): void; }; //# sourceMappingURL=typeUtils.d.ts.map