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();
}
我目前正在为使用 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();
}