import type { Plugin } from "vue"; /** * 安装方法 */ export type InstallRecord = T & Plugin; /** * 默认插槽参数 */ export type DefaultSlotProp = (props: {}) => unknown /** * 默认插槽类型 */ export interface DefaultSlots { default: DefaultSlotProp; icon?: DefaultSlotProp; } /** * 合并类型为交叉类型 */ export type Merge = { [K in keyof T]: T[K] } & { [K in keyof R]: R[K] } /** * 合并交叉类型 */ type MergeIntersection = Pick /** * 提取必传属性 */ export type PickRequiredUnion = MergeIntersection>, Omit>> /** * 除了提取的属性,其他都是必传属性 */ export type PickNotRequiredUnion = MergeIntersection, Required>>>