useStateUpdater
有效用途包括:
const [state, toggle] = useStateUpdater(false, bool => () => !bool);
toggle();
console.log(state); // true
或
const [str, append] = useStateUpdater('foo', str => more => str + more);
append('bar');
console.log(str); // 'foobar'
这是我的钩子代码,其中包含到目前为止我能够定义的类型:
// @flow
import { useState } from 'react';
type UseStateUpdater = <S, U>(
initialState: (() => S) | S,
updater: U
) => [S, any => void];
const useStateUpdater: UseStateUpdater = ((initialState, updater) => {
const [state, setState] = useState(initialState);
return [state, (...args) => setState(state => updater(state)(...args))];
}: any);
export default useStateUpdater;
一切都很好,但问题是,目前,这家公司的回报率很高
updater
any
作为参数类型。
我希望它有作为参数类型的
U
在第二个函数中键入。
useStateUpdater(S, S => ARGS => S);
^
How do I reference this?
type UseStateUpdater = <S, U>(
initialState: (() => S) | S,
updater: U
) => [S, (...args: $Arguments<$ReturnType<typeof U>>) => void];
思想?