zhangwei
2025-06-25 ce5e84197b43dec8c01717b116cb77535ad3c91e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// 此文件跟同级目录的 global.d.ts 文件一样也是全局类型声明,只不过这里存放一些零散的全局类型,无需引入直接在 .vue 、.ts 、.tsx 文件使用即可获得类型提示
 
type RefType<T> = T | null;
 
type EmitType = (event: string, ...args: any[]) => void;
 
type TargetContext = "_self" | "_blank";
 
type ComponentRef<T extends HTMLElement = HTMLDivElement> =
  ComponentElRef<T> | null;
 
type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>;
 
type ForDataType<T> = {
  [P in T]?: ForDataType<T[P]>;
};
 
type AnyFunction<T> = (...args: any[]) => T;
 
type PropType<T> = VuePropType<T>;
 
type Writable<T> = {
  -readonly [P in keyof T]: T[P];
};
 
type Nullable<T> = T | null;
 
type NonNullable<T> = T extends null | undefined ? never : T;
 
type Recordable<T = any> = Record<string, T>;
 
type ReadonlyRecordable<T = any> = {
  readonly [key: string]: T;
};
 
type Indexable<T = any> = {
  [key: string]: T;
};
 
type DeepPartial<T> = {
  [P in keyof T]?: DeepPartial<T[P]>;
};
 
type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };
 
type Exclusive<T, U> = (Without<T, U> & U) | (Without<U, T> & T);
 
type TimeoutHandle = ReturnType<typeof setTimeout>;
 
type IntervalHandle = ReturnType<typeof setInterval>;
 
type Effect = "light" | "dark";
 
interface ChangeEvent extends Event {
  target: HTMLInputElement;
}
 
interface WheelEvent {
  path?: EventTarget[];
}
 
interface ImportMetaEnv extends ViteEnv {
  __: unknown;
}
 
interface Fn<T = any, R = T> {
  (...arg: T[]): R;
}
 
interface PromiseFn<T = any, R = T> {
  (...arg: T[]): Promise<R>;
}
 
interface ComponentElRef<T extends HTMLElement = HTMLDivElement> {
  $el: T;
}
 
function parseInt(s: string | number, radix?: number): number;
 
function parseFloat(string: string | number): number;