我升级到了反应18,并且在typeof useCallback上遇到了麻烦。我以前可以这样做:
import type { UseCallback } from 'react'
interface MyComponentProps {
onChange: UseCallback<(value: boolean) => void>;
}但是,现在UseCallback不再从react导出,在执行此操作时我会得到一个错误:
type CallbackFn = (value: boolean) => void;
interface MyComponentProps {
onChange: ReturnType<typeof useCallback<CallbackFn>>. //Parsing error: '>' expected.eslint
}有谁知道如何强制用户传递由onChange包装的useCallback
发布于 2022-06-28 20:49:35
我认为没有任何方法可以强制函数通过useCallback传递,因为它不会改变函数的类型。useCallback类型记录的定义是:
function useCallback<T extends Function>(callback: T, deps: DependencyList): T;它接受一个类型为T的函数,并返回类型T,因此它们是不可区分的。
我能想到的处理这个问题的唯一方法是围绕useCallback制作自己的包装器,它返回某种格式的{fn: T, __isCallback: true},并让您的道具接受这种类型。从技术上讲,开发人员也可以手动传递该对象,但它将引导他们使用自定义useCallbackTyped的返回。
https://stackoverflow.com/questions/72791036
复制相似问题