@l33tc0d3/reshape
Version:
Provides useful methods for reshaping collections
67 lines (64 loc) • 4.13 kB
TypeScript
// Generated by dts-bundle-generator v9.5.1
export type ArrayToMapKey<K, T> = K extends keyof T ? T[K] : K extends (item: T) => PropertyKey ? ReturnType<K> : never;
export type ArrayToMapValue<V, T> = V extends readonly (keyof T)[] ? Pick<T, Extract<V[number], keyof T>> : V extends keyof T ? T[V] : V extends (item: T) => any ? ReturnType<V> : T;
export declare function arrayToMap<T, K extends keyof T | ((item: T) => PropertyKey)>(array: T[], keyProp: K): Map<ArrayToMapKey<K, T>, T>;
export declare function arrayToMap<T, K extends keyof T | ((item: T) => PropertyKey), V extends keyof T>(array: T[], keyProp: K, valueProps: V): Map<ArrayToMapKey<K, T>, T[V]>;
export declare function arrayToMap<T, K extends keyof T | ((item: T) => PropertyKey), V extends readonly (keyof T)[]>(array: T[], keyProp: K, valueProps: V): Map<ArrayToMapKey<K, T>, Pick<T, V[number]>>;
export declare function arrayToMap<T, K extends keyof T | ((item: T) => PropertyKey), V extends (item: T) => any>(array: T[], keyProp: K, valueProps: V): Map<ArrayToMapKey<K, T>, ReturnType<V>>;
export type ArrayToRecordKey<K, T> = K extends keyof T ? T[K] & PropertyKey : K extends (item: T) => PropertyKey ? ReturnType<K> : never;
export type ArrayToRecordValue<V, T> = V extends readonly (keyof T)[] ? Pick<T, Extract<V[number], keyof T>> : V extends keyof T ? T[V] : V extends (item: T) => any ? ReturnType<V> : T;
export declare function arrayToRecord<T, K extends keyof T | ((item: T) => PropertyKey)>(array: T[], keyProp: K): Record<ArrayToRecordKey<K, T>, T>;
export declare function arrayToRecord<T, K extends keyof T | ((item: T) => PropertyKey), V extends keyof T>(array: T[], keyProp: K, valueProps: V): Record<ArrayToRecordKey<K, T>, T[V]>;
export declare function arrayToRecord<T, K extends keyof T | ((item: T) => PropertyKey), V extends readonly (keyof T)[]>(array: T[], keyProp: K, valueProps: V): Record<ArrayToRecordKey<K, T>, Pick<T, V[number]>>;
export declare function arrayToRecord<T, K extends keyof T | ((item: T) => PropertyKey), V extends (item: T) => any>(array: T[], keyProp: K, valueProps: V): Record<ArrayToRecordKey<K, T>, ReturnType<V>>;
/**
* Returns the keys of an object as a strongly-typed array of keys.
*
* @param obj - The object whose keys are to be extracted.
* @returns An array of keys of the given object, typed as the keys of the object.
*
* @example
* const person = { name: "Alice", age: 30 };
* const keys = objectKeys(person); // Type: ['name', 'age']
*/
export declare function objectKeys<T extends object>(obj: T): (keyof T)[];
/**
* Returns the values of an object as a strongly-typed array of values.
*
* @param obj - The object whose values are to be extracted.
* @returns An array of values of the given object, typed as the values of the object.
*
* @example
* const person = { name: "Alice", age: 30 };
* const values = objectValues(person); // Type: [string, number]
*/
export declare function objectValues<T extends object>(obj: T): T[keyof T][];
/**
* Returns the entries of an object as a strongly-typed array of key-value pairs.
*
* @param obj - The object whose entries (key-value pairs) are to be extracted.
* @returns An array of key-value pairs of the given object, where each element is a tuple of [key, value].
*
* @example
* const person = { name: "Alice", age: 30 };
* const entries = objectEntries(person); // Type: [['name', string], ['age', number]]
*/
export declare function objectEntries<T extends object>(obj: T): [
keyof T,
T[keyof T]
][];
/**
* Creates an object from an array of key-value pairs, while maintaining strong typing for the object’s keys and values.
*
* @param entries - An array of key-value pairs to convert into an object. Each entry is a tuple of `[key, value]`.
* @returns A new object with the provided key-value pairs, typed as `Record<K, V>`.
*
* @example
* const entries = [['name', 'Alice'], ['age', 30]] as const;
* const person = objectFromEntries(entries); // Type: { name: string, age: number }
*/
export declare function objectFromEntries<K extends PropertyKey, V>(entries: [
K,
V
][]): Record<K, V>;
export {};