缺少A. A的类型注释是在函数类型中声明的类型参数

问题描述 投票:1回答:1

我有以下代码:

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错误,同时保持应用程序运行没有错误?

谢谢!

node.js react-native react-redux expo flowtype
1个回答
0
投票

请尝试在文件的第一行添加@flow编译指示注释。这可能与babel问题有关:https://github.com/babel/babel/issues/9240

编辑:有undocumented all option in flow-strip-typesbabel-preset-expo在内部使用它)。

你需要在你的babel配置中覆盖它:

overrides: [{
    plugins: [
        ['@babel/plugin-transform-flow-strip-types', {all: true}],
    ]
}]
© www.soinside.com 2019 - 2024. All rights reserved.