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

问题描述 投票:1回答:3

这是我的代码:

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

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

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

我怎么解决这个问题?

reactjs typescript redux react-redux strict
3个回答
2
投票

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

用这个 :

TrackCircuitReader:TrackCircuitReader


0
投票

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

更改

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

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

0
投票

通过输入错字,而不是:,你使用的是shorthand property names

所以,你的对象文字相当于:

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

From MDN

Gecko 34之前的严格模式要求对象文字中指定的所有属性都是唯一的。普通代码可以复制属性名称,最后一个确定属性的值。但由于只有最后一个做任何事情,复制只是一个bug的向量,如果代码被修改为更改属性值而不是通过更改最后一个实例。严重模式下,重复的属性名称是语法错误。

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

您可以将文字简化为:

export const rootReducer = combineReducers({
    posts: postReducers,
    stationsReducer,
    trackCircuitReducer
})
© www.soinside.com 2019 - 2024. All rights reserved.