未提供“id”的参数。角11

Mes*_*ine 2 javascript typescript angular

我正在尝试使用 Angular 创建一个 TS User 类。我声明了我的属性,如下面的代码所示,但我收到此错误。

未提供“id”的参数。

export class User {

   private  id: number;
   private  etabName: string;
 

  constructor(id: number, etabName: string, ) {
    this.id = id;
    this.etabName = etabName;
   
  }

  get _id(): number {
    return this. id;
  }

  set _id(value: number) {
    this. id = value;
  }



}
Run Code Online (Sandbox Code Playgroud)

Sam*_*eer 5

原答案

当您尝试在不传递参数的情况下实例化该类时,就会出现此问题,因为您没有指定参数是可选的。

像这样使参数可选

export class User {
  ... 

  constructor(id?: number, etabName?: string, ) {
    this.id = id || 0; //Specify default value
    this.etabName = etabName || ''; //Specify default value
   
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

然后你可以实例化没有参数的类

const user = new User();//works
Run Code Online (Sandbox Code Playgroud)

更新

您可以使用下面的语法更好地编写它,Typescript 将负责创建属性​​并为其分配默认值。

class User {
  constructor(private id: number = 0, private etabName: string = '') {
  }

   ...setters and getters omitted for readability
}
Run Code Online (Sandbox Code Playgroud)

上面的 typescript 将转换为下面的 javascript

class User {
    constructor(id = 0, etabName = '') {
        this.id = id;
        this.etabName = etabName;
    }
   ...setters and getters omitted for readability
}
Run Code Online (Sandbox Code Playgroud)