【问题标题】:A parameter property is only allowed in constructor implementation参数属性只允许在构造函数实现中使用
【发布时间】:2019-07-04 18:12:54
【问题描述】:

我已经编写了这段代码,这行 use(private lang: string): Promise<object> 给了我一个错误:“参数属性只允许在构造函数实现中”。

当我删除访问修饰符 private 时它可以工作,但我只是好奇为什么它会给我这个错误以及正确的方法是什么?

@Injectable()
export class TranslateService {

  public data: object = {};

  constructor(private http: HttpClient) {}

  use(private lang: string): Promise<object> {
    return new Promise<object>((resolve, reject) => {
      const langPath = `assets/i18n/${lang || 'en'}.json`;

      this.http.get<object>(langPath).subscribe(
        translation => {
          this.data = Object.assign({}, translation || {});
          resolve(this.data);
        },
        error => {
          this.data = {};
          resolve(this.data);
        }
      );
    });
  }

}

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    删除私有

    use(private lang: string): Promise<object> {
    

    privatepublic 仅用于类级别,而不是函数级别(它们始终是私有的)。

    类中唯一接受public 或/和private 的函数是构造函数,因为它将为类赋值并创建属性。

    【讨论】:

      猜你喜欢
      • 2019-02-21
      • 2020-07-24
      • 2023-02-03
      • 1970-01-01
      • 2017-04-23
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多