UNPKG

nesity-types

Version:

A set of TypeScript utilities that help you write stricter code.

26 lines (22 loc) 739 B
/* eslint-disable @typescript-eslint/no-explicit-any */ import type { InferKeyOptionalityFromTupleType } from './utility.js' type $Key = 0 type $Value = 1 export type fromEntriesType = < Tuples extends readonly [...(readonly (readonly [PropertyKey, any])[])], >( entries: Tuples, ) => Tuples extends [...Tuples[number][]] ? { [K in Tuples[number][$Key]]?: (readonly [K, Tuples[number][$Value]] & Tuples[number])[$Value] } : { [K in keyof InferKeyOptionalityFromTupleType<Tuples[number]>]: (readonly [ K, Tuples[number][$Value], ] & Tuples[number])[$Value] } // eslint-disable-next-line prefer-destructuring export const fromEntries: fromEntriesType = Object.fromEntries