forked from frejs/fre
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.d.ts
110 lines (79 loc) · 2.54 KB
/
index.d.ts
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
declare module 'fre' {
type Key = FreText
interface RefObject<T> {
current: T
}
type RefCallback<T> = {
bivarianceHack(instance: T | null): void
}['bivarianceHack']
type Ref<T = any> = RefCallback<T> | RefObject<T> | null
interface Attributes {
key?: Key
ref?: Ref
}
interface FunctionComponent<P extends Attributes = {}> {
(props: P): FreElement<P> | null
}
interface FreElement<P extends Attributes = {}, T = string> {
type: T
props: P
}
type FreText = string | number
type FreNode = FreText | FreElement | FreNode[] | boolean | null | undefined
type SetStateAction<S> = S | ((prevState: S) => S)
type Dispatch<A> = (value: A) => void
type Reducer<S, A> = (prevState: S, action: A) => S
type EffectCallback = () => void | (() => void | undefined)
type DependencyList = ReadonlyArray<any>
interface PropsWithChildren {
children: FreNode
}
function createElement<P extends Attributes = {}>(
type: string,
props?: P,
...children: FreNode[]
): FreElement<P, string>
function createElement<P extends Attributes = {}>(
type: FunctionComponent<P>,
props?: P,
...children: FreNode[]
): FreElement<P, FunctionComponent<P>>
function h<P extends Attributes = {}>(
type: string,
props?: P,
...children: FreNode[]
): FreElement<P, string>
function h<P extends Attributes = {}>(
type: FunctionComponent<P>,
props?: P,
...children: FreNode[]
): FreElement<P, FunctionComponent<P>>
function Fragment(props: PropsWithChildren): FreElement
function render(
vnode: FreElement,
node: Element | Document | DocumentFragment | Comment,
done?: () => void
): void
function useState<T>(initState: T): [T, Dispatch<SetStateAction<T>>]
function useState<T = undefined>(): [
T | undefined,
Dispatch<SetStateAction<T>>
]
function useReducer<S, A>(
reducer: Reducer<S, A>,
initState: S
): [S, Dispatch<A>]
function useEffect(cb: EffectCallback, deps?: DependencyList): void
function useLayoutEffect(effect: EffectCallback, deps?: DependencyList): void
function useLayout(effect: EffectCallback, deps?: DependencyList): void
function useMemo<T>(factory: () => T, deps?: DependencyList): T
function useCallback<T extends (...args: any[]) => any>(
callback: T,
deps?: DependencyList
): T
function useRef<T>(initialValue: T): RefObject<T>
function useRef<T = undefined>(): RefObject<T | undefined>
function memo<P extends Attributes = {}>(
fn: FunctionComponent<P>
): FunctionComponent<P>
}