// Như tệp global.d.ts cùng cấp với nó, tệp này cũng là khai báo toàn cầu, nhưng lưu trữ một số loại toàn cầu phân tán. Không cần nhập, bạn có thể sử dụng trực tiếp trong các tệp .vue, .ts, .tsx để nhận được gợi ý kiểu type RefType = T | null; type EmitType = (event: string, ...args: any[]) => void; type TargetContext = "_self" | "_blank"; type ComponentRef = ComponentElRef | null; type ElRef = Nullable; type ForDataType = { [P in T]?: ForDataType; }; 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; type ReadonlyRecordable = { readonly [key: string]: T; }; type Indexable = { [key: string]: T; }; type DeepPartial = { [P in keyof T]?: DeepPartial; }; type Without = { [P in Exclude]?: never }; type Exclusive = (Without & U) | (Without & T); type TimeoutHandle = ReturnType; type IntervalHandle = ReturnType; type Effect = "light" | "dark"; interface ChangeEvent extends Event { target: HTMLInputElement; } interface WheelEvent { path?: EventTarget[]; } interface ImportMetaEnv extends ViteEnv { __: unknown; } interface Fn { (...arg: T[]): R; } interface PromiseFn { (...arg: T[]): Promise; } interface ComponentElRef { $el: T; } // eslint-disable-next-line @typescript-eslint/no-unused-vars function parseInt(s: string | number, radix?: number): number; // eslint-disable-next-line @typescript-eslint/no-unused-vars function parseFloat(string: string | number): number;