type TargetContext = "_self" | "_blank"; type EmitType = (event: string, ...args: any[]) => void; type AnyFunction = (...args: any[]) => T; type PropType = VuePropType; type Writable = { -readonly [P in keyof T]: T[P]; }; type Nullable = T | null; type NonNullable = T extends null | undefined ? never : T; type Recordable = Record; interface Fn { (...arg: T[]): R; } interface PromiseFn { (...arg: T[]): Promise; } interface ViteEnv { VITE_USER_NODE_ENV: "development" | "production"; VITE_PUBLIC_PATH: string; VITE_PORT: number; }