在严格模式下,对象文字不能具有多个具有相同名称的属性

时间:2019-03-11 14:05:45

标签: reactjs typescript redux react-redux strict

这是mye代码:

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:减速器

     

对象文字不能具有相同名称的多个属性   在严格模式下。ts(1117)

     

重复标识符'trackCircuitReducer'.ts(2300)

我该如何解决?

3 个答案:

答案 0 :(得分:2)

问题在于您正在使用逗号而不是两个点   trackCircuitReducer,trackCircuitReducer

使用此:

  

trackCircuitReducer:trackCircuitReducer

答案 1 :(得分:0)

在对象中,所有键之后应带有:以传递值。

更改

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

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

答案 2 :(得分:0)

使用错字,而不是:,就可以使用shorthand property names

因此,您的对象文字等于:

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

From MDN

  

在Gecko 34之前的严格模式下,在对象文字中命名的所有属性都必须是唯一的。普通代码可能重复属性名称,最后一个确定属性的值。但是由于只有最后一个函数会执行任何操作,因此如果修改代码以更改属性值(而不是通过更改最后一个实例),则复制只是错误的向量。属性名称重复是严格模式下的语法错误。

(注意:ECMAScript 2015不再是这种情况)

您可以将文字简化为:

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