ES6 二传手 |错误 TS2300:重复标识符

ES6 Setters | error TS2300: Duplicate identifier

我目前正在为使用 Input/Output 装饰器和 setter 的 Angular 2 组件编写一个 class:

export class ItemDetails {

    // Assign our `item` to a locally scoped property
    @Input('item') _item: Item;
    originalName: string;
    selectedItem: Item;

    // Allow the user to save/delete an item or cancel the
    // operation. Flow events up from here.
    @Output() saved = new EventEmitter();
    @Output() cancelled = new EventEmitter();

    // Perform additional logic on every update via ES6 setter
    // Create a copy of `_item` and assign it to `this.selectedItem`
    // which we will use to bind our form to
    set _item(value: Item) {

        if (value) this.originalName = value.name;
          this.selectedItem = Object.assign({}, value);
    }
}

我很确定除非我遗漏了什么,否则这段代码应该没问题,但我收到错误:

error TS2300: Duplicate identifier '_item'

任何关于为什么会这样的见解将不胜感激:)

A setter 不附加到现有的 属性,它是它自己的 class 成员 - 您不能定义 _item 然后命名一个 setter同样的事情。

为了完成我想做的事情,这个修改后的 class 工作正常:

export class ItemDetails {

    @Input('item') set _item(value: Item) {

        if (value) this.originalName = value.name;
          this.selectedItem = Object.assign({}, value);
    }
    originalName: string;
    selectedItem: Item;

    @Output() saved = new EventEmitter();
    @Output() cancelled = new EventEmitter();
}