com-tools
Version:
com-tools 提供了一些通用的工具函数;
141 lines • 6.71 kB
TypeScript
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