UNPKG

decode-it

Version:

a simple zero-dependency type safe json decoder for typescript

24 lines (23 loc) 944 B
export declare type AnyElementOf<T extends any[]> = T[number]; export declare type NonEmptyArray<T> = [T, ...T[]]; export declare type ArrayTwoOrMore<T> = T[] & { 0: T; 1: T; }; export declare type UndefinedProperties<T> = { [P in keyof T]-?: undefined extends T[P] ? P : never; }[keyof T]; declare type UndefinedKeys<T> = { [P in keyof T]: undefined extends T[P] ? P : never; }[keyof T]; export declare type OptionalUndefined<T> = Omit<T, UndefinedKeys<T>> & Partial<Pick<T, UndefinedKeys<T>>>; export declare type Id<T> = { [P in keyof T]: T[P]; }; declare type Try<T, T2, N> = T extends T2 ? T : N; declare type Narrowable = boolean | number | string | null; declare type _Narrow<T> = (T extends [] ? [] : never) | (T extends Narrowable ? T : never) | { [key in keyof T]: T[key] extends (...args: unknown[]) => unknown ? T[key] : _Narrow<T[key]>; }; export declare type Narrow<T> = Try<T, [], _Narrow<T>>; export {};