例如,如果您正在使用redux-actions
并为其创建了以下模块定义:
declare module 'redux-actions' {
declare type ActionType = string
declare type Action = {
type: ActionType,
payload?: any,
error?: bool,
meta?: any,
}
declare function createAction<T>(
type: string,
payloadCreator?: (...args: Array<T>) => any,
metaCreator?: Function
): (...args: Array<T>) => Action
}
然后你使用该函数返回一个这样的新函数:
export const selectProfileTab = createAction('SELECT_PROFILE_TAB', (index: number) => {
playSound()
return { index }
})
然后在另一个文件中使用它错误:
selectorProfileTab('someString')
不会报告错误。这似乎是因为流程需要在模块的“边界”进行注释。我是对的吗?
因为以下方法有效:
export const selectProfileTab: (index: number) => any = createAction('SELECT_PROFILE_TAB', (index: number) => {
playSound()
return { index }
})
注意我已经注释了返回的函数。以下将产生错误:
selectProfileTab('someString')
我只是试图抓住这个并验证这一点,因为它是一个额外的“样板”来注释那些返回的函数,特别是当它调用selectProfileTab('someString')
会正确产生错误时如果在同一个文件。它让你想到:为redux-actions
包创建模块定义有什么意义,如果它没有提供任何/多值,那么它还没有它们,因为你必须注释你返回的函数。那令人非常失望。我是否正确确定它是Flow的模块“边界”限制/要求?有没有办法获得所需的结果,而不必输入您导出的返回函数?