UNPKG

@l33tc0d3/reshape

Version:

Provides useful methods for reshaping collections

67 lines (64 loc) 4.13 kB
// 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 {};