【问题标题】:Duplicate declaration TypeScript Getter Setter重复声明 TypeScript Getter Setter
【发布时间】:2018-05-10 13:24:01
【问题描述】:

我正在尝试为 TypeScript 中的字段创建 getter 和 setter。

searchFilter: string;

get searchFilter(): string {
  return this.searchFilter;
}

set searchFilter(value: string) {
  this.searchFilter = value;
}

这给出了错误:

Duplicate identifier 'searchFilter'.

我在 Angular 项目中使用 TypeScript。

@angular/cdk: 6.0.1
@angular/cli: 1.7.4
typescript: 2.5.3

【问题讨论】:

    标签: angular typescript setter getter


    【解决方案1】:

    您不能拥有与用于 getter 或 setter 的名称相同的属性。

    所以创建另一个私有属性(_searchFilter) 来存储本地状态

    private _searchFilter: string;
    
    get searchFilter(): string {
      return this._searchFilter;
    }
    
    set searchFilter(value: string) {
      this._searchFilter = value;
    }
    

    【讨论】:

    • 在字段前添加 _ 是否会使其自动成为私有,还是必须显式键入私有 _variableName?
    • 不,它只是一个约定
    • linter 可能会在使用_时给你一个警告
    • @sander 不会将变量设为私有,需要注意的是,这是一个违背Angular guidelines的约定。
    • 使用 _ 不是惯例,这是一种不好的做法。所以这可行,但不是真正的解决方案
    猜你喜欢
    • 2013-07-26
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2020-06-14
    • 2014-05-20
    • 2018-09-13
    相关资源
    最近更新 更多