简体   繁体   English

A的类型注释缺失。A是在函数类型中声明的类型参数

[英]Missing type annotation for A. A is a type parameter declared in function type

I have the following code: 我有以下代码:

import { combineReducers } from 'redux';
import planeReducer from './plane/reducer';

export default combineReducers({
    planes: planeReducer
});

which runs properly when running: 在运行时可以正常运行:

> expo start

Then, when I run flow with the following command: 然后,当我使用以下命令运行flow时:

>  npm run flow

I get the following flow error: 我收到以下流错误:

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>;

Then, when I modify the code above by adding: <any, any> as follows: 然后,当我通过添加以下内容来修改上面的代码时: <any, any>如下:

import { combineReducers } from 'redux';
import planeReducer from './plane/reducer';

export default combineReducers<any, any>({
    planes: planeReducer
});

when I run flow again as before, the flow error goes away, but if I run again: 当我像以前一样再次运行flow时, flow错误消失了,但是如果我再次运行:

> expo start

I get the following runtime error: 我收到以下运行时错误:

[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 |

Any idea on how to modify the code properly in order fix that flow error and at the same time keep the applicatioin running with no errors? 关于如何正确修改代码以修复flow错误并同时保持应用程序无错误运行的任何想法?

Thanks! 谢谢!

Please try adding @flow pragma comment in the first line of the file. 请尝试在文件的第一行中添加@flow pragma注释。 It's probably related to the babel issue: https://github.com/babel/babel/issues/9240 . 这可能与babel问题有关: https : //github.com/babel/babel/issues/9240

Edit : There's undocumented all option in flow-strip-types ( babel-preset-expo makes use of it internally). 编辑flow-strip-types未记录的all选项babel-preset-expo在内部使用它)。

You need to overwrite it in your babel config: 您需要在babel配置中覆盖它:

overrides: [{
    plugins: [
        ['@babel/plugin-transform-flow-strip-types', {all: true}],
    ]
}]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM