@aplus-frontend/ui
Version:
35 lines (34 loc) • 1.22 kB
TypeScript
import { CSSProperties, VNode } from 'vue';
export type StyleValue = string | CSSProperties | Array<StyleValue>;
export type Nullable<T> = T | null;
export type Recordable<T = any> = Record<string, T>;
export type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>;
/**
* 任意类型的异步函数
*/
type AnyPromiseFunction = (...arg: any[]) => PromiseLike<any>;
/**
* 任意类型的普通函数
*/
type AnyNormalFunction = (...arg: any[]) => any;
/**
* 任意类型的函数
*/
export type AnyFunction = AnyNormalFunction | AnyPromiseFunction;
export interface Fn<T = any, R = T> {
(...arg: T[]): R;
}
export interface ComponentElRef<T extends HTMLElement = HTMLDivElement> {
$el: T;
}
export type ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null;
export type EmitType = ReturnType<typeof defineEmits>;
type VNodeChildAtom = VNode | string | number | boolean | null | undefined | void;
export type VueNode = VNodeChildAtom | VNodeChildAtom[] | VNode;
export type LiteralUnion<T extends U, U> = T | (U & {
zz_IGNORE_ME?: never;
});
export type RecursivePartial<T> = {
[P in keyof T]?: T[P] extends object ? RecursivePartial<T[P]> : T[P];
};
export {};