我有以下代码:
import { combineReducers } from 'redux';
import planeReducer from './plane/reducer';
export default combineReducers({
planes: planeReducer
});
在运行时正常运行:
> expo start
然后,当我使用以下命令运行flow
时:
> npm run flow
我收到以下流量错误:
Missing type annotation for A. A is a type parameter declared in function type [1] and was implicitly instantiated at
call of combineReducers [2].
src/store/index.js
1| import { combineReducers } from 'redux';
2| import planeReducer from './plane/reducer';
3|
[2] 4| export default combineReducers({
5| planes: planeReducer
6| });
7|
flow-typed/npm/redux_v4.x.x.js
[1] 56| declare export function combineReducers<O: Object, A>(reducers: O): CombinedReducer<$ObjMap<O, <S>(r: Reducer<S, any>) => S>, A>;
然后,当我通过添加:<any, any>
修改上面的代码,如下所示:
import { combineReducers } from 'redux';
import planeReducer from './plane/reducer';
export default combineReducers<any, any>({
planes: planeReducer
});
当我像以前一样再次运行flow
时,flow
错误消失,但如果我再次运行:
> expo start
我收到以下运行时错误:
[01:30:16] Your app is running at exp://192.168.1.194:19000
Logs for your project will appear below. Press Ctrl+C to exit.
[01:30:16] SyntaxError: D:\react-navigation-header-issue\src\store\index.js: Unexpected token, expected ";" (4:34)
[01:30:16] 2 | import planeReducer from './plane/reducer';
[01:30:16] 3 |
[01:30:16] > 4 | export default combineReducers<any, any>({
[01:30:16] | ^
[01:30:16] 5 | planes: planeReducer
[01:30:16] 6 | });
[01:30:16] 7 |
有关如何正确修改代码的任何想法,以修复flow
错误,同时保持应用程序运行没有错误?
谢谢!
请尝试在文件的第一行添加@flow
编译指示注释。这可能与babel问题有关:https://github.com/babel/babel/issues/9240。
编辑:有undocumented all
option in flow-strip-types
(babel-preset-expo
在内部使用它)。
你需要在你的babel配置中覆盖它:
overrides: [{
plugins: [
['@babel/plugin-transform-flow-strip-types', {all: true}],
]
}]