UNPKG

functionalscript

Version:

FunctionalScript is a purely functional subset of JavaScript

29 lines (28 loc) 1.15 kB
import { type List } from '../list/module.f.ts'; import { type OrderedMap } from '../ordered_map/module.f.ts'; export type Map<T> = { readonly [k in string]: T; }; export type Entry<T> = readonly [string, T]; export declare const at: (name: string) => <T>(object: Map<T>) => T | null; export declare const sort: <T>(e: List<Entry<T>>) => List<Entry<T>>; export declare const fromEntries: <T>(e: List<Entry<T>>) => Map<T>; export declare const fromMap: <T>(m: OrderedMap<T>) => Map<T>; /** * A set of objects with a single key. * * See also * https://stackoverflow.com/questions/57571664/typescript-type-for-an-object-with-only-one-key-no-union-type-allowed-as-a-key */ export type OneKey<K extends string, V> = { [P in K]: (Record<P, V> & Partial<Record<Exclude<K, P>, never>>) extends infer O ? { [Q in keyof O]: O[Q]; } : never; }[K]; /** * https://stackoverflow.com/questions/61112584/typing-a-single-record-entry */ export type NotUnion<T, U = T> = T extends unknown ? [ U ] extends [T] ? T : never : never; export type SingleProperty<T extends Record<string, never>> = keyof T extends NotUnion<keyof T> ? T : never;