我有以下代码:
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
错误并同时保持应用程序无错误运行的任何想法?
谢谢!
答案 0 :(得分:0)
请尝试在文件的第一行中添加@flow
杂注注释。可能与通天塔问题有关: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}],
]
}]