UNPKG

typescript-util

Version:

JS/TS 的简单工具

120 lines 4.49 kB
import { BiConsumer, Predicate, Supplier } from '../Function'; import { KeyValue } from '../model/KeyValue'; /** * ObjectTool * @author 冰凝 * @date 2022-09-19 09:42:58 **/ export declare class ObjectTool { /** * 判断入参是否是空 * @param {Object} o 待检查对象 * @return {boolean} 如果 o 是 null 或者 undefined 返回 true, 否则 返回 false */ static isNull(o: any): boolean; /** * 对象非空 * @param o * @return {boolean} */ static isNotNull(o: any): boolean; /** * 对象是空对象: {} * @param o 待检查对象 * @return {boolean} 是空? */ static isEmpty(o: any): boolean; /** * 对象非空 */ static isNotEmpty(o: any): boolean; /** * 要求参数非空, 否则执行自定义回调 */ static requireNotNullElse(o: Record<string, any>, callback?: () => void): void; static requireNotNull<T>(o: T): T; /** * 要求非空, 否则返回默认值 * @param o 检查对象 * @param defaultValue 默认值, 非空 */ static requireNotNullDefault<T>(o: T | undefined | null, defaultValue: T): T; /** * 要求非空, 否则执行给定 {@link Supplier} 并返回 * @param o 检查对象 * @param supplier 默认值提供 */ static requireNotNullSupplier<T>(o: T, supplier: Supplier<T>): T; /** * 对象"复制", 使用 Object.keys 复制第一层属性的引用 * @param source 源 * @param target 目标 * @param ignoreKeys 忽略的属性 */ static copyByKeys<S = Record<string, any>, T = Record<string, any>>(source: S, target: T, ...ignoreKeys: string[]): void; /** * 对象键值反转, 不修改原对象 * @param o */ static keyValueReverse<K extends PropertyKey, V extends PropertyKey>(o: Record<K, V>): Record<V, K>; /** * 根据指定key匹配谓词, 删除一部分属性; * 修改源对象 * @param o 待处理对象 * @param pre 入参key ,返回 true 删除这个属性 */ static deleteByKey<K extends PropertyKey, V = any>(o: Record<K, V>, pre: Predicate<K>): void; /** * 根据指定value匹配谓词, 删除一部分属性; * 修改源对象 */ static deleteByValue<K extends PropertyKey, V = any>(o: Record<K, V>, pre: Predicate<V>): void; /** * 根据指定 key | value 匹配谓词, 删除一部分属性; * 修改源对象 */ static deleteProperty<K extends PropertyKey, V = any>(o: Record<K, V>, keyPre: Predicate<K>, valPre: Predicate<V>): void; /** * 过滤空属性, 不修改源对象 * 空定义: {@link #isNull} * @param {object} o 允许为空 * @return 永远非空 */ static filterNullProperty<T>(o: T | null | undefined): T; /** * 对象属性和值遍历 * 真 - 把对象当 Map 用; * 回调中传递的是原对象属性和值, 这意味着对其进行任何操作都反馈到源对象 (如果可能, 一般所有引用类型都是如此) * @param o 待遍历对象, 允许为空 (不执行任何操作) * @param bc 对象中每一组 key: value 的消费者; 第一个参数为属性名; 第二个参数为属性值 * @exception Error NPE 如果 bc 为空 * @see https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/entries */ static forEach<K extends PropertyKey, V>(o: Record<K, V>, bc: BiConsumer<string, V>): void; /** * 对象转 {@link KeyValue} 数组 * @param o */ static toArray<T, K extends keyof T>(o: T): Array<KeyValue<K, T[K]>>; /** * 对象值相等比较 * <li>如果 a b 引用相等 返回 true</li> * <li>如果 a b 全 Null 返回 true</li> * <li>如果 a b 含任意一个 Null (另外一个不是 Null) 返回 false</li> * <li>最后 根据 a b 转为 JSON 后的字符串判断相等性</li> * * 注意: 因为 {@code JSON.stringify} 的问题; 不要传入二进制对象比较, 结果未知 * @param a 待判断值 允许为空 * @param b 待判断值 允许为空 * @return {boolean} a b 值相等 */ static equals(a: any, b: any): boolean; /** * 复制, 不要对二进制对象使用, 性能差, 结果未知 * @param o 源 * @return 新对象 */ static copy<S>(o: S): S; private static throwNPE; } //# sourceMappingURL=ObjectTool.d.ts.map