Тип, который будет соответствовать функции, возвращаемой при вызове useState
, будет:
setMyVar: (value: boolean | ((prevVar: boolean) => boolean)) => void;
Если мы посмотрим на файл определения типа из DefinitelyTyped
[1], то увидим, что вторым типом в возвращаемом типе является диспетчеризация:
function useState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>];
Таким образом, предоставленный универсальный тип передается в SetStateAction<S>
, который определяется как:
type SetStateAction<S> = S | ((prevState: S) => S);
Итак, интерфейс вашего компонента будет следующим:
interface IProps {
myVar: boolean;
setMyVar?: (value: boolean | (prevVar: boolean) => boolean) => void;
}
Ссылка:
[1] https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts#L845