UNPKG

com-tools

Version:

com-tools 提供了一些通用的工具函数;

141 lines 6.71 kB
export type ProxyOptions = { get?: boolean; set?: boolean; configurable?: boolean; enumerable?: boolean; getDefault?: any; setDefault?: any; }; /** * 通过把值转换成JSON字符来判断是否相等 * * @remarks * - 方法能用于判断对象的内容是否相等,相等的条件是:这2个对象拥有相同的属性 和 属性值,且属性及属性的属性 的添加顺序是一致的;即:当两个对象的拥有相同的属性和属性值时,如果属性的定义的顺序不同,该方法会返回 false; * - 该方法依赖于 JSON.stringify() 的逻辑; */ export declare function isEqualByJSON(value1: any, value2: any): boolean; /** * 多次遍历、分批循环;可以把一个大遍历分成若干个小遍历来完成; * * @param mLoopOpts - 选项对象 * @returns 停止循环的函数;调用该函数,会终止正在进行的循环 */ export declare function multipleLoop<StopInfo, ThisValue>(mLoopOpts: { loopCall: (this: ThisValue, index: number, stepCount: number, total: number) => StopInfo; complete?: (this: ThisValue, stopInfo: StopInfo, index: number, stepCount: number, total: number) => void; stepComplete?: (this: ThisValue, index: number, stepCount: number, total: number) => StopInfo; thisValue?: ThisValue; total?: number; step?: number; delay?: number; }): (stopInfo?: StopInfo) => void; declare global { interface Array<T> { /** * 多次遍历、分批循环;可以把一个大遍历分成若干个小遍历来完成; * * @param mLoopOpts - 选项对象 * @returns 停止循环的函数 */ multipleLoop<StopInfo, ThisValue>(mLoopOpts: { loopCall: (this: ThisValue, currentValue: T, index: number, stepCount: number, arr: T[]) => StopInfo; complete?: (this: ThisValue, stopInfo: StopInfo, index: number, stepCount: number, arr: T[]) => void; stepComplete?: (this: ThisValue, index: number, stepCount: number, arr: T[]) => StopInfo; thisValue?: ThisValue; step?: number; delay?: number; }): (stopInfo?: StopInfo) => void; } } /** * 对 iterable 进行安全的迭代;与 for...of 的区别是:safelyIterate 能保证迭代过程不会受 operation 中的行为影响从而能迭代每一个元素; * * @param iterable - 可迭代的对象 * @param operation - 执行的操作,返回值表示是否过滤出该元素 * @param thisValue - 操作 operation 的 this 值,默认值是 iterable * @returns 返回被 operation 过滤出的元素 */ export declare function safelyIterate<T, ThisValue>(iterable: Iterable<T>, operation: (this: ThisValue, currentValue: T, currentIndex: number, iterable: Iterable<T>) => any, thisValue?: ThisValue): T[]; type ListenablePropOpts<T> = { ready?: string; noEvent?: boolean; event?: string; newValueKey?: string; oldValueKey?: string; getDefault?: (this: T, thisValue: T) => any; }; /** * 定义可监听的属性 * * @param obj - 要在其上定义属性的对象 * @param prop - 要定义的属性的名称 * @param options - 配置选项 * @returns 被传递给函数的对象 */ export declare function defineListenableProperty<T extends object>(obj: T, prop: string, options?: ListenablePropOpts<T>): any; /** * 批量定义可监听的属性 * * @param obj - 要在其上定义属性的对象 * @param props - 属性配置对象或属性名数组 * @param options - 当 props 为数组时的配置选项 * @returns 被传递给函数的对象 */ export declare function defineListenableProperties<T extends object>(obj: T, props: { [prop: string]: ListenablePropOpts<T>; } | string[], options?: ListenablePropOpts<T>): any; /** * 定义可监听属性的 getter;该方法一般经常用于:一些可监听属性在被定义时,还不能定义 getDefault 选项,只能在稍后某个时刻定义 getDefault 选项,此时便可用此函数来简化重新定义 getter 的操作; * * @param obj - 要在其上定义属性的对象 * @param prop - 要定义的属性的名称 * @param getDefault - 在获取 prop 属性的值时,如果 prop 属性的值不存在,则会通过该函数获取默认的值 * @param asGetter - 是否将 getDefault 作为 getter */ export declare function defineListenablePropertyGetter<T extends object>(obj: T, prop: string, getDefault?: (this: T, thisValue: T) => any, asGetter?: boolean): void; /** * 生成唯一的标识符 * * @returns 唯一标识符字符串 */ export declare function createUniqueIdentifier(): string; declare global { interface ControllablePromise<T> extends Promise<T> { resolve(value?: T | PromiseLike<T>): void; reject(reason?: any): void; clearAdditions(): void; } } /** * 创建外部可控制的改变 Promise 状态的 Promise 对象;该 Promise 对象在状态未完成之前,会有 resolve、reject、clearAdditions 三个方法,当 Promise 的状态完成时,这三个方法会自动被删除; * * @param executor - executor 是带有 resolve 和 reject 两个参数的函数 * @param statusCompletesImmediately - 该参数表示在 executor 函数中是否会立即(同步)调用 resolve 或 reject * @returns 带有 resolve、reject 和 clearAdditions 三个方法的 Promise 实例 */ export declare function createControllablePromise<T>(executor?: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void, statusCompletesImmediately?: boolean): ControllablePromise<T>; /** * 定义代理属性;给对象 proxy 增加能够代理 target 对象的属性 prop; * 当在访问或配置 proxy 对象上的 prop 属性时,会将操作转发到 target 对象的 prop 属性; * * @param proxy - 会在该对象上添加代理属性 prop * @param target - 被代理的对象 * @param prop - 代理属性的名字 * @param options - 代理属性的配置选项 * @returns 传递给函数的代理对象 proxy */ export declare function defineProxyProperty(proxy: object, target: object, prop: string, options?: ProxyOptions): any; /** * 批量定义代理属性 * * @param proxy - 会在该对象上添加代理属性 * @param target - 被代理的对象 * @param props - 代理属性名数组或属性配置对象 * @param options - 当 props 为数组时的配置选项 * @returns 传递给函数的代理对象 proxy */ export declare function defineProxyProperties(proxy: object, target: object, props: string[] | { [prop: string]: ProxyOptions; }, options?: ProxyOptions): any; export {}; //# sourceMappingURL=oriTools.d.ts.map