Отсутствует аннотация типа для A. A - это параметр типа, объявленный в типе функции - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть следующий код:

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 и в то же время оставить приложение работающим без ошибок?

Спасибо!

1 Ответ

0 голосов
/ 18 февраля 2019

Пожалуйста, попробуйте добавить @flow комментарий к прагме в первой строке файла.Вероятно, это связано с проблемой babel: https://github.com/babel/babel/issues/9240.

Редактировать : есть опция недокументированная all в flow-strip-types (babel-preset-expo использует ее внутренне).

Вам необходимо перезаписать его в конфигурации babel:

overrides: [{
    plugins: [
        ['@babel/plugin-transform-flow-strip-types', {all: true}],
    ]
}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...