我可以在angular + ngrx中使用对象扩展语法吗?

时间:2017-04-05 07:46:33

标签: javascript object redux ngrx spread-syntax

我正在阅读here关于对象传播语法的内容,我正在尝试在我的项目中使用它,我的设置如下:

  • angular 2
  • angular / cli 1.0.0-rc.0
  • ngrx / core 1.2.0
  • ngrx / store 2.2.1
  • rxjs 5.1.0
  • typescript 2.0.10

在我的reducer.ts中我有

export interface State {
  [id: number]: string
}

export function reducer(state= {}, action: Action): State {
case 'TEST':
  return {
    ...state,
    2: 'foo'
  }
}

但是我得到了以下编译错误,我正在试图找出错误:

Property assignment expected
Type '{ 2: string; state: State; }' is not assignable to type 'State'
Object literal may only specify known properties, and 'state' does not exist in type 'State'

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

不使用您正在使用的TypeScript版本。

支持对象属性扩展语法为introduced in TypeScript 2.1

  

对象传播和休息

     

TypeScript 2.1支持ES2017 Spread and Rest

     

与数组传播类似,传播对象可以很方便地获得浅层副本:

let copy = { ...original };