Flow js 不适用泛型
Flow js doesn`t apply generic
我有一个函数(react hook):
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 typing.
猜出来的
但是当我使用 handleLeavePage 时,我得到一个错误:
TValues
[1] 与 属性 onLeavePage
.
的第一个参数中的 ValuesType
[2] 不兼容
我认为 flowjs 不理解 TValue 在 handleLeavePage 中是通用的。
如何解决?
尝试this
不声明 handleLeavePage
参数的类型,而是键入 useHandles
函数的输出。
我有一个函数(react hook):
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 typing.
猜出来的但是当我使用 handleLeavePage 时,我得到一个错误:
TValues
[1] 与 属性 onLeavePage
.
ValuesType
[2] 不兼容
我认为 flowjs 不理解 TValue 在 handleLeavePage 中是通用的。
如何解决?
尝试this
不声明 handleLeavePage
参数的类型,而是键入 useHandles
函数的输出。