keys-mapper
Version:
keys-mapper 是一个通过设置属性名字映射,就可将一个对象转换成另一个对象的工具;支持循环引用、反向映射、深度映射
71 lines (70 loc) • 1.93 kB
TypeScript
export declare type Key = string | number | symbol;
export declare type Keys = Key | Key[];
/**
* 映射的 key
* - null :表示删除当前 key
* - undefined : 没有映射,相关于没有为该key设置映射
*/
export declare type MapKey = Key | null | undefined;
export declare type MapKeys = MapKey | MapKey[];
/**
* 对象开式的key映射
*/
export declare type KeyMapsObject = {
[SK in Key]: MapKeys;
};
/**
* 数组开式的key映射
*/
export declare type KeyMapsArray = [Keys, MapKeys][];
/**
* key 映射
*/
export declare type KeyMaps = KeyMapsObject | KeyMapsArray;
/**
* 将 KeyMaps 类型 转为 KeyMapsObject 类型
* @param keyMaps
* @returns
*/
export declare function toKeyMapsObject(keyMaps: KeyMaps): KeyMapsObject;
/**
* 将 keyMaps1 和 keyMaps2 合并成一个 KeyMapsObject 对象
*/
export declare function mergeKeyMaps(keyMaps1: KeyMaps, keyMaps2: KeyMaps): KeyMapsObject;
/**
* 将 keyMaps 反转
* @param keyMaps
* @returns
*/
export declare function reverseKeyMaps(keyMaps: KeyMaps): KeyMapsArray;
/**
* 完成的回调函数
*/
export declare type CompleteCB<V> = (copy: V) => void;
/**
* keysMapper 函数的配置选项
*/
export interface KeysMapperOptions {
maxDepth?: number | null | undefined;
deleOther?: boolean | null | undefined;
reverse?: boolean | null | undefined;
keep?: boolean | null | undefined;
array?: boolean;
}
export interface KeysMapper {
/**
* 键映射
*/
(source: any, options?: KeysMapperOptions | null | undefined, keyMaps?: KeyMaps | null | undefined): any;
/**
* 预设的 KeyMapsObject
*/
presetKeyMapsObject: KeyMapsObject;
}
/**
* 创建以 presetKeyMapsObject 为预设的 keysMapper() 函数
* @param presetKeyMapsObject
* @returns
*/
export declare function createKeysMapper(presetKeyMapsObject?: KeyMapsObject): KeysMapper;
export declare const keysMapper: KeysMapper;