typedconverter
Version:
Convert object into classes match with TypeScript type annotation
42 lines (41 loc) • 1.87 kB
TypeScript
import { Opt, val } from "./decorators";
import { VisitorExtension, VisitorInvocation } from "./invocation";
import { Class } from "./types";
import { partial, PartialValidator, Validator, validatorVisitor, ValidatorDecorator, RequiredValidator } from "./validation";
import { Result, ResultMessages } from "./visitor";
interface Option<T = any> {
/**
* Expected type
*/
type: T;
/**
* List of visitor extension to extend TypedConverter internal process
*/
visitors?: VisitorExtension[];
/**
* Top decorators of the type
*/
decorators?: any[];
/**
* Root path
*/
path?: string;
/**
* Guess single value as array element if expected type is array. Default false
*/
guessArrayElement?: boolean;
}
/**
* Convert value into type specified on configuration.
* @param value
* @param opt
*/
declare function convert<T = any>(value: any, option: Option<T> | T): T extends Class<infer R>[] ? Result<R[]> : T extends Class<infer R> ? Result<R> : Result<any>;
/**
* Create type converter with specific configuration
* @param option
*/
export default function createConverter<T = any>(option: Option<T> | T): (value: any) => T extends Class<infer R>[] ? Result<R[]> : T extends Class<infer R_1> ? Result<R_1> : Result<any>;
declare function createValidator<T>(option: T | Option<T>): (value: any) => T extends Class<infer R>[] ? Result<R[]> : T extends Class<infer R_1> ? Result<R_1> : Result<any>;
declare function validate<T>(value: any, option: Option<T> | T): T extends Class<infer R>[] ? Result<R[]> : T extends Class<infer R_1> ? Result<R_1> : Result<any>;
export { convert, Option, VisitorExtension, VisitorInvocation, Result, ResultMessages, partial, validatorVisitor, Validator, PartialValidator, val, Opt, validate, createValidator, ValidatorDecorator, RequiredValidator };