functionalscript
Version:
FunctionalScript is a purely functional subset of JavaScript
29 lines (28 loc) • 1.15 kB
TypeScript
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;