record.ts•480 B
/* eslint-disable @typescript-eslint/no-unsafe-argument */
import type { A } from 'ts-toolbelt'
import { reduce } from './reduce'
/**
 * Builds a {@link Record} like TS does.
 * @param keys
 * @param values
 * @returns
 */
function record<K extends A.Key, V>(keys: K[], values: V[]): Record<K, V> {
  return reduce(keys, (acc, key, pos) => ({ ...acc, [key]: values[pos] }), {} as Record<K, V>)
}
// TODO improve types as values might not be the same length
export { record }