import type { ComputedRef, MaybeRef, Ref } from 'vue'; export type EmitType = (event: string, ...args: any[]) => void; export type ElRef = T | null; export type MaybeComputedRef = MaybeReadonlyRef | MaybeRef; export type MaybeReadonlyRef = (() => T) | ComputedRef; /** * @description 浅层的RecordRef * @example * interface User { * name: sting; * age: number; * } * const user1: MaybeShallowRecordRef = { * name: "Tom", // * age: 1, // * } * const name = ref("Tom") * const age = ref(1) * const user2: MaybeShallowRecordRef = { * name: name, // * age: 1, // * } */ export type MaybeShallowRecordRef = { [P in keyof T]: MaybeRef; }; /** * @description 深层的RecordRef */ export type MaybeRecordRef = { [P in keyof T]: T[P] extends object ? MaybeRecordRef : MaybeRef; }; export type ToRawByRecordRef = { [P in keyof T]: T[P] extends Ref ? U : T[P] extends object ? ToRawByRecordRef : T[P]; };