@vue-ui-kit/ant
Version:
Vue3 UI Kit based on Ant Design
134 lines (120 loc) • 2.65 kB
TypeScript
//<editor-fold desc="👇全局类型补丁,不需要引用👇">
declare type Recordable<T = any> = Record<string, T>;
type PartialByKeys<T, K extends keyof T = keyof T> = Omit<T, K & keyof T> &
Partial<Pick<T, K & keyof T>> extends infer U
? { [K in keyof U]: U[K] }
: never;
type DeepPick<T extends Record<string, any>, U extends string> = (
U extends string
? U extends `${infer F}.${infer R}`
? (arg: {
[K in F]: DeepPick<T[F], R>;
}) => void
: U extends keyof T
? (arg: Pick<T, U>) => void
: (arg: unknown) => void
: never
) extends (arg: infer Z) => void
? Z
: never;
//选项类型
interface IOption<T = any> {
value: T;
label: string;
color?: string;
}
interface OptionGroup<T> {
label?: string;
options: IOption<T>[];
}
//树形结构类型
type ITreeAble<T, U = void> = U extends void
? T & { children?: ITreeAble<T>[] }
: U extends string
? T & { [key in U]?: ITreeAble<T, U>[] }
: T;
declare type WrapID<T extends Recordable> = {
readonly id: string | number;
} & { [K in keyof T]: T[K] };
declare type TimeoutHandle = ReturnType<typeof window.setTimeout>;
declare type IntervalHandle = ReturnType<typeof window.setInterval>;
declare type GrowToSize<T, N extends number, A extends T[]> = A['length'] extends N
? A
: GrowToSize<T, N, [...A, T]>;
declare type FixedArray<T, N extends number> = GrowToSize<T, N, []>;
interface IPage {
/**
* 第几页
*/
page: number;
/**
* 一页显示的数量
*/
size: number;
}
interface WrapList<T> {
/**
* 列表
*/
list: T[];
}
interface WrapPage<T> {
/**
* 列表
*/
list: T[];
/**
* 当前页码
*/
page: number;
/**
* 总页数
*/
pages?: string[];
/**
* 每页数量
*/
size: number;
/**
* 总数量
*/
total: number;
}
interface ISchema {
id: number;
/**
* 操作人
*/
operator?: string;
/**
* 创建人
*/
create_by?: string;
/**
* 更新人
*/
update_by?: string;
/**
* 更新时间
*/
update_time?: number;
/**
* 创建时间
*/
create_time?: number;
/**
* 创建人
*/
creator?: string;
}
declare module '*.vue' {
import type { DefineComponent } from 'vue'
// biome-ignore lint/complexity/noBannedTypes: reason
const component: DefineComponent<{}, {}, any>
export default component
}
declare module '*.png';
declare module '*.svg';
declare module '*.jpeg';
declare module '*.jpg';
//</editor-fold>