shapeit
Version:
Object validation tools for Javascript and, specially, Typescript
29 lines (28 loc) • 1.2 kB
TypeScript
import { LiterableName, Literable, LiteralDescriptor, FromLiteralDescriptor, Template, Concat } from '../types/literals';
import { FromPrimitive } from '../types/utils';
/**
* Creates a literal descriptor from type names or constant unions
*
* @example
* $('boolean'); // Equivalent to `${boolean}` in a literal type
*
* @example
*
* $('boolean', $$(10, 11)); // Equivalent to `${boolean | 10 | 11}` in a literal type
*/
export declare function $<T extends (LiterableName | LiteralDescriptor)[]>(...values: T): LiteralDescriptor<T[number] extends LiterableName ? FromPrimitive<T[number]> : FromLiteralDescriptor<T[number]>>;
/**
* Creates a literal descriptor from a constant union
*
* @example
* $$('id', 'ID'); // Equivalent to `${'id' | 'ID'}` in a literal type
*/
export declare function $$<T extends Literable[]>(...values: T): LiteralDescriptor<T[number]>;
/**
* Creates a literal descriptor from a literal template.
*
* @example
* $$$('a', $('number')); // Equivalent to `${`a${number}`}` in a literal type
*/
export declare function $$$<T extends Template>(...template: T): LiteralDescriptor<Concat<T>>;
export declare function valueToRegex(value: Literable): string;