我有一个函数(反应钩子):

function useHandles<TPreparedValues, TValues>({
    onReject,
    makeData,
}: ArgsType<TPreparedValues, TValues>) {
    const handleLeavePage =  (formData: TValues) => onReject(makeData(formData))

    return {
      handleLeavePage
    }
}


其中ArgsType为:

type ArgsType<TPreparedValues, TValues> = {
    onReject: (TPreparedValues) => Promise<void>,
    makeData: TValues => TPreparedValues
};


然后我使用这个钩子:

const {
    handleLeavePage,
} = useDocumentHandles<DocumentEditInputType, ValuesType>({
    onReject,
    makeData,
})


如您所见,我定义TValues = ValuesType。当然,flowjs应该从onReject类型进行猜测。

但是当我使用handleLeavePage时,出现错误:
属性TValues的第一个参数中的ValuesType [1]与onLeavePage [2]不兼容。

我认为flowjs无法理解TValue在handleLeavePage中是通用的。

如何解决?

最佳答案

尝试this

而不是声明handleLeavePage参数的类型,而键入useHandles函数的输出。

10-06 15:12