30 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import type { PropType } from 'vue';
 | 
						||
import type { EpProp, EpPropConvert, EpPropFinalized, EpPropInput, EpPropMergeType, IfEpProp, IfNativePropType, NativePropType } from './types';
 | 
						||
export declare const epPropKey = "__epPropKey";
 | 
						||
export declare const definePropType: <T>(val: any) => PropType<T>;
 | 
						||
export declare const isEpProp: (val: unknown) => val is EpProp<any, any, any>;
 | 
						||
/**
 | 
						||
 * @description Build prop. It can better optimize prop types
 | 
						||
 * @description 生成 prop,能更好地优化类型
 | 
						||
 * @example
 | 
						||
  // limited options
 | 
						||
  // the type will be PropType<'light' | 'dark'>
 | 
						||
  buildProp({
 | 
						||
    type: String,
 | 
						||
    values: ['light', 'dark'],
 | 
						||
  } as const)
 | 
						||
  * @example
 | 
						||
  // limited options and other types
 | 
						||
  // the type will be PropType<'small' | 'large' | number>
 | 
						||
  buildProp({
 | 
						||
    type: [String, Number],
 | 
						||
    values: ['small', 'large'],
 | 
						||
    validator: (val: unknown): val is number => typeof val === 'number',
 | 
						||
  } as const)
 | 
						||
  @link see more: https://github.com/element-plus/element-plus/pull/3341
 | 
						||
 */
 | 
						||
export declare const buildProp: <Type = never, Value = never, Validator = never, Default extends EpPropMergeType<Type, Value, Validator> = never, Required extends boolean = false>(prop: EpPropInput<Type, Value, Validator, Default, Required>, key?: string) => EpPropFinalized<Type, Value, Validator, Default, Required>;
 | 
						||
export declare const buildProps: <Props extends Record<string, {
 | 
						||
    [epPropKey]: true;
 | 
						||
} | NativePropType | EpPropInput<any, any, any, any, any>>>(props: Props) => { [K in keyof Props]: IfEpProp<Props[K], Props[K], IfNativePropType<Props[K], Props[K], EpPropConvert<Props[K]>>>; };
 |