Объектный литерал не может иметь несколько свойств с одинаковым именем в строгом режиме - PullRequest
1 голос
/ 11 марта 2019

Это мой код:

import { combineReducers } from 'redux';
import { postReducers } from './postReducers';
import { stationsReducer } from './TrackCircuitSensorDataFormReducers/StationsReducer';
import { trackCircuitReducer } from './TrackCircuitSensorDataFormReducers/TrackCircuitReducer';

export const rootReducer = combineReducers({
    posts: postReducers,
    stationsReducer: stationsReducer,
    trackCircuitReducer, trackCircuitReducer
});

export type IApplicationState = ReturnType<typeof rootReducer>;

Линия:

trackCircuitReducer, trackCircuitReducer

Дает мне:

(свойство) trackCircuitReducer: Reducer

Литерал объекта не может иметь несколько свойств с одинаковым именем. в строгом режиме.ts (1117)

Дубликат идентификатора 'trackCircuitReducer'.ts (2300)

Как я могу решить это?

Ответы [ 3 ]

2 голосов
/ 11 марта 2019

Проблема в том, что вы используете запятую вместо двух точек trackCircuitReducer, trackCircuitReducer

Используйте это:

trackCircuitReducer: trackCircuitReducer

0 голосов
/ 11 марта 2019

Имея опечатку , вместо :, вы используете сокращенные имена свойств .

Итак, ваш литерал объекта эквивалентен:

{
    posts: postReducers,
    stationsReducer: stationsReducer,
    trackCircuitReducer: trackCircuitReducer,
    trackCircuitReducer: trackCircuitReducer,
}

От MDN :

Строгий режим до Gecko 34 требует, чтобы все свойства, названные в литерале объекта, были уникальными. Обычный код может дублировать имена свойств, причем последний определяет значение свойства. Но поскольку только последний ничего не делает, дублирование - это просто вектор ошибок, если код изменяется для изменения значения свойства, отличного от изменения последнего экземпляра. Повторяющиеся имена свойств являются синтаксической ошибкой в ​​строгом режиме.

(Примечание. Это не относится к ECMAScript 2015 )

Вы можете упростить ваш литерал до:

export const rootReducer = combineReducers({
    posts: postReducers,
    stationsReducer,
    trackCircuitReducer
})
0 голосов
/ 11 марта 2019

В объекте все ключи должны сопровождаться : для передачи значения.

Изменение

export const rootReducer = combineReducers({
    posts: postReducers,
    stationsReducer: stationsReducer,
    trackCircuitReducer, trackCircuitReducer
});

до

export const rootReducer = combineReducers({
    posts: postReducers,
    stationsReducer: stationsReducer,
    trackCircuitReducer: trackCircuitReducer
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...