【问题标题】:An object literal cannot have multiple properties with the same name in strict mode一个对象字面量在严格模式下不能有多个同名的属性
【发布时间】:2019-03-11 14:05:45
【问题描述】:

这是我的代码:

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)

我该如何解决这个问题?

【问题讨论】:

    标签: reactjs typescript redux react-redux strict


    【解决方案1】:

    问题是因为您使用的是逗号而不是两个点 trackCircuitReducer、trackCircuitReducer

    使用这个:

    trackCircuitReducer:trackCircuitReducer

    【讨论】:

    • 状态不太可能被*Reducer 键乱扔,更有可能是{ posts: postReducers, stations: stationsReducer, trackCircuit: trackCircuitReducer }
    【解决方案2】:

    在一个对象中,所有键都应该跟: 来传递值。

    改变

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

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

    【讨论】:

      【解决方案3】:

      通过输入拼写错误, 而不是:,您使用的是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
      })
      

      【讨论】:

        猜你喜欢
        • 2016-07-19
        • 1970-01-01
        • 2019-01-01
        • 1970-01-01
        • 2012-06-15
        • 1970-01-01
        • 2015-10-11
        • 2017-12-31
        • 1970-01-01
        相关资源
        最近更新 更多