// 不能直接用 vue-demi 的 ExtractPropTypes, 编译后项目会找不到该类型 import type { ExtractPropTypes, Ref, UnwrapRef } from 'vue-demi'; import type { plainProps, treeProps, wrapperProps } from './use/index'; export type BuiltInField = 'field' | 'query'; /** 将值改为原始值或引用值 */ export type MaybeRef = T | Ref; /** 将整个集合改为原始值或引用值 */ export type DeepMaybeRef = T extends Ref ? MaybeRef : T extends (...args: any) => any ? MaybeRef : T extends Array | Record ? { [K in keyof T]: DeepMaybeRef } : MaybeRef; /** 获取实际值(去除 ref 引用) */ export type ToRaw = UnwrapRef; export interface WrapperProps extends Omit>, BuiltInField> {} export interface PlainProps extends Omit>, BuiltInField> {} export interface TreeProps extends Omit>, BuiltInField> {} export type OmitDefaultKey = T extends Record ? { [K in keyof T]: T[K] extends { default: any } ? Omit : T[K]; } : T;