参数属性只允许在构造函数实现中

Moh*_*umb 6 typescript angular

所以我写了这段代码,这一行use(private lang: string): Promise<object>给了我一个错误“A parameter property in only allowed in constructor implementation”

当我删除访问修饰符时它会起作用,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);
        }
      );
    });
  }

}
Run Code Online (Sandbox Code Playgroud)

Ngu*_*ien 6

删除私有的

use(private lang: string): Promise<object> {
Run Code Online (Sandbox Code Playgroud)

private并且public仅在类级别使用,而不是在函数级别使用(它们始终是私有的)。

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