/** * Typing system for LoopBack */ import { Options } from '../common-types'; export interface Type { /** * Name of the type */ name: string; /** * Test if the given value is an instance of this type * @param value - The value */ isInstance(value: any): boolean; /** * Generate the default value for this type */ defaultValue(): T | null | undefined; /** * Check if the given value can be coerced into this type * @param value - The value to to be coerced * @returns A flag to indicate if the value can be coerced */ isCoercible(value: any, options?: Options): boolean; /** * Coerce the value into this type * @param value - The value to be coerced * @param options - Options for coercion * @returns Coerced value of this type */ coerce(value: any, options?: Options): T | null | undefined; /** * Serialize a value into json * @param value - The value of this type * @param options - Options for serialization */ serialize(value: T | null | undefined, options?: Options): any; }