vben
2020-12-25 4ff1c408dc1acfc49e0adc61dc2e539c0c198158
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
declare interface Fn<T = any, R = T> {
  (...arg: T[]): R;
}
 
declare interface PromiseFn<T = any, R = T> {
  (...arg: T[]): Promise<R>;
}
 
declare interface IObj<T = any> {
  [key: string]: T;
  [key: number]: T;
}
 
declare function parseInt(s: string | number, radix?: number): number;
 
declare function parseFloat(string: string | number): number;
 
declare type Nullable<T> = T | null;
 
declare type NonNullable<T> = T extends null | undefined ? never : T;
 
declare type RefType<T> = T | null;
 
declare type CustomizedHTMLElement<T> = HTMLElement & T;
 
declare type Indexable<T extends any = any> = {
  [key: string]: T;
};
 
declare type Recordable<T extends any = any> = Record<string, T>;
 
declare type Hash<T> = Indexable<T>;
 
declare type DeepPartial<T> = {
  [P in keyof T]?: DeepPartial<T[P]>;
};
 
// type DeepPartial<T> = T extends Function
//   ? T
//   : T extends object
//   ? { [K in keyof T]?: DeepPartial<T[K]> }
//   : T;
 
declare type LabelValueOptions = {
  label: string;
  value: any;
}[];
 
declare type EmitType = (event: string, ...args: any[]) => void;
 
declare type TargetContext = '_self' | '_blank';
 
declare type TimeoutHandle = ReturnType<typeof setTimeout>;
 
declare type IntervalHandle = ReturnType<typeof setInterval>;
 
declare interface ComponentElRef<T extends HTMLElement = HTMLDivElement> {
  $el: T;
}
 
declare type ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null;
 
declare type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>;
 
type IsSame<A, B> = A | B extends A & B ? true : false;