@@ -17,6 +17,9 @@ import {REACT_RESPONDER_TYPE} from 'shared/ReactSymbols';
1717
1818import ReactCurrentDispatcher from './ReactCurrentDispatcher' ;
1919
20+ type BasicStateAction < S > = ( S => S ) | S ;
21+ type Dispatch < A > = A => void ;
22+
2023function resolveDispatcher ( ) {
2124 const dispatcher = ReactCurrentDispatcher . current ;
2225 invariant (
@@ -72,7 +75,9 @@ export function useContext<T>(
7275 return dispatcher . useContext ( Context , unstable_observedBits ) ;
7376}
7477
75- export function useState < S > ( initialState : ( ( ) => S ) | S ) {
78+ export function useState < S > (
79+ initialState : ( ( ) => S ) | S ,
80+ ) : [ S , Dispatch < BasicStateAction < S >> ] {
7681 const dispatcher = resolveDispatcher ( ) ;
7782 return dispatcher . useState ( initialState ) ;
7883}
@@ -81,7 +86,7 @@ export function useReducer<S, I, A>(
8186 reducer : ( S , A ) = > S ,
8287 initialArg : I ,
8388 init ? : I => S ,
84- ) {
89+ ) : [ S , Dispatch < A > ] {
8590 const dispatcher = resolveDispatcher ( ) ;
8691 return dispatcher . useReducer ( reducer , initialArg , init ) ;
8792}
@@ -93,46 +98,49 @@ export function useRef<T>(initialValue: T): {|current: T|} {
9398
9499export function useEffect(
95100 create: () => ( ( ) => void ) | void ,
96- inputs : Array < mixed > | void | null ,
97- ) {
101+ deps : Array < mixed > | void | null ,
102+ ) : void {
98103 const dispatcher = resolveDispatcher ( ) ;
99- return dispatcher . useEffect ( create , inputs ) ;
104+ return dispatcher . useEffect ( create , deps ) ;
100105}
101106
102107export function useLayoutEffect (
103108 create : ( ) = > ( ( ) => void ) | void ,
104- inputs : Array < mixed > | void | null ,
105- ) {
109+ deps : Array < mixed > | void | null ,
110+ ) : void {
106111 const dispatcher = resolveDispatcher ( ) ;
107- return dispatcher . useLayoutEffect ( create , inputs ) ;
112+ return dispatcher . useLayoutEffect ( create , deps ) ;
108113}
109114
110- export function useCallback (
111- callback : ( ) = > mixed ,
112- inputs : Array < mixed > | void | null ,
113- ) {
115+ export function useCallback < T > (
116+ callback : T ,
117+ deps : Array < mixed > | void | null,
118+ ): T {
114119 const dispatcher = resolveDispatcher ( ) ;
115- return dispatcher . useCallback ( callback , inputs ) ;
120+ return dispatcher . useCallback ( callback , deps ) ;
116121}
117122
118- export function useMemo (
119- create : ( ) = > mixed ,
120- inputs : Array < mixed > | void | null ,
121- ) {
123+ export function useMemo< T > (
124+ create: () => T ,
125+ deps : Array < mixed > | void | null,
126+ ): T {
122127 const dispatcher = resolveDispatcher ( ) ;
123- return dispatcher . useMemo ( create , inputs ) ;
128+ return dispatcher . useMemo ( create , deps ) ;
124129}
125130
126131export function useImperativeHandle< T > (
127132 ref: { | current : T | null | } | ((inst: T | null) => mixed ) | null | void ,
128133 create : ( ) => T ,
129- inputs : Array < mixed > | void | null ,
134+ deps : Array < mixed > | void | null,
130135): void {
131136 const dispatcher = resolveDispatcher ( ) ;
132- return dispatcher . useImperativeHandle ( ref , create , inputs ) ;
137+ return dispatcher . useImperativeHandle ( ref , create , deps ) ;
133138}
134139
135- export function useDebugValue ( value : any , formatterFn : ?( value : any ) = > any ) {
140+ export function useDebugValue< T > (
141+ value: T,
142+ formatterFn: ?(value: T) => mixed ,
143+ ) : void {
136144 if ( __DEV__ ) {
137145 const dispatcher = resolveDispatcher ( ) ;
138146 return dispatcher . useDebugValue ( value , formatterFn ) ;
0 commit comments