UNPKG

vue-ts-types

Version:

Lightweight TypeScript-first Vue prop type definitions

28 lines (27 loc) 1.03 kB
export interface PropOptions<T> { type?: PropType<T>; required?: boolean; default?: T | (() => T | null | undefined) | null | undefined; validator?(value: T): boolean; } export type PropType<T> = PropConstructor<T> | PropConstructor<T>[]; export type PropConstructor<T> = { (): T; } | { new (...parameters: any[]): T & object; }; export type RequiredPropOptions<T> = PropOptions<T> & { required: true; }; export type DefaultPropOptions<T> = PropOptions<T> & { default: unknown; }; export interface PropOptionsGenerator<T> { optional: DefaultPropOptions<T | undefined>; nullable: DefaultPropOptions<T | null>; withDefault: (defaultValue: OneOfDefaultType<T>) => DefaultPropOptions<T>; required: RequiredPropOptions<T>; } /** Allow simple values for primitive types, require generator function for complex types */ export type OneOfDefaultType<T> = T extends boolean | number | string | symbol | null | undefined ? T : () => T; export type Constructor = new (...parameters: any[]) => any;