decode-it
Version:
a simple zero-dependency type safe json decoder for typescript
4 lines (3 loc) • 4.6 kB
TypeScript
import { Narrow } from '../helperTypes';
import { Validator } from './Validator';
export declare const literal: <T>(val: T extends [] ? T : (T extends [] ? [] : never) | (T extends string | number | boolean | null ? T : never) | { [key in keyof T]: T[key] extends (...args: unknown[]) => unknown ? T[key] : (T[key] extends [] ? [] : never) | (T[key] extends string | number | boolean | null ? T[key] : never) | { [key_1 in keyof T[key]]: T[key][key_1] extends (...args: unknown[]) => unknown ? T[key][key_1] : (T[key][key_1] extends [] ? [] : never) | (T[key][key_1] extends string | number | boolean | null ? T[key][key_1] : never) | { [key_2 in keyof T[key][key_1]]: T[key][key_1][key_2] extends (...args: unknown[]) => unknown ? T[key][key_1][key_2] : (T[key][key_1][key_2] extends [] ? [] : never) | (T[key][key_1][key_2] extends string | number | boolean | null ? T[key][key_1][key_2] : never) | { [key_3 in keyof T[key][key_1][key_2]]: T[key][key_1][key_2][key_3] extends (...args: unknown[]) => unknown ? T[key][key_1][key_2][key_3] : (T[key][key_1][key_2][key_3] extends [] ? [] : never) | (T[key][key_1][key_2][key_3] extends string | number | boolean | null ? T[key][key_1][key_2][key_3] : never) | { [key_4 in keyof T[key][key_1][key_2][key_3]]: T[key][key_1][key_2][key_3][key_4] extends (...args: unknown[]) => unknown ? T[key][key_1][key_2][key_3][key_4] : (T[key][key_1][key_2][key_3][key_4] extends [] ? [] : never) | (T[key][key_1][key_2][key_3][key_4] extends string | number | boolean | null ? T[key][key_1][key_2][key_3][key_4] : never) | { [key_5 in keyof T[key][key_1][key_2][key_3][key_4]]: T[key][key_1][key_2][key_3][key_4][key_5] extends (...args: unknown[]) => unknown ? T[key][key_1][key_2][key_3][key_4][key_5] : (T[key][key_1][key_2][key_3][key_4][key_5] extends [] ? [] : never) | (T[key][key_1][key_2][key_3][key_4][key_5] extends string | number | boolean | null ? T[key][key_1][key_2][key_3][key_4][key_5] : never) | { [key_6 in keyof T[key][key_1][key_2][key_3][key_4][key_5]]: T[key][key_1][key_2][key_3][key_4][key_5][key_6] extends (...args: unknown[]) => unknown ? T[key][key_1][key_2][key_3][key_4][key_5][key_6] : (T[key][key_1][key_2][key_3][key_4][key_5][key_6] extends [] ? [] : never) | (T[key][key_1][key_2][key_3][key_4][key_5][key_6] extends string | number | boolean | null ? T[key][key_1][key_2][key_3][key_4][key_5][key_6] : never) | { [key_7 in keyof T[key][key_1][key_2][key_3][key_4][key_5][key_6]]: T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7] extends (...args: unknown[]) => unknown ? T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7] : (T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7] extends [] ? [] : never) | (T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7] extends string | number | boolean | null ? T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7] : never) | { [key_8 in keyof T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7]]: T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8] extends (...args: unknown[]) => unknown ? T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8] : (T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8] extends [] ? [] : never) | (T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8] extends string | number | boolean | null ? T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8] : never) | { [key_9 in keyof T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8]]: T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9] extends (...args: unknown[]) => unknown ? T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9] : (T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9] extends [] ? [] : never) | (T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9] extends string | number | boolean | null ? T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9] : never) | { [key_10 in keyof T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9]]: T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9][key_10] extends (...args: unknown[]) => unknown ? T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9][key_10] : (T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9][key_10] extends [] ? [] : never) | (T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9][key_10] extends string | number | boolean | null ? T[key][key_1][key_2][key_3][key_4][key_5][key_6][key_7][key_8][key_9][key_10] : never) | any; }; }; }; }; }; }; }; }; }; }; }) => Validator<T>;