最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - An argument for 'id' was not provided. angular 11 - Stack Overflow

programmeradmin2浏览0评论

I'm trying to create a TS User class with angular. I declared my attributes as shown in the code below, but I'm getting this error.

An argument for 'id' was not provided.

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;
  }



}

I'm trying to create a TS User class with angular. I declared my attributes as shown in the code below, but I'm getting this error.

An argument for 'id' was not provided.

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;
  }



}

Share Improve this question edited Apr 20, 2021 at 0:31 Nisala 1,3381 gold badge16 silver badges32 bronze badges asked Apr 20, 2021 at 0:28 Messaoud Med YassineMessaoud Med Yassine 351 gold badge1 silver badge8 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 5

Original Answer

The issue occurs when you try to instantiate the class without passing arguments, as you did not specify arguments will be optional.

Make arguments optional like this

export class User {
  ... 

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

then you can instantiate class without arguments

const user = new User();//works

Update

You can write it even better with this syntax below, Typescript will take care of creating properties and assigning default values to it.

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

   ...setters and getters omitted for readability
}

The above typescript will be converted to below javascript

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

Remove the extra space of this. id = value;. Change it to this.id = value;.

I think you need to provide move Information

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;
  }



}

发布评论

评论列表(0)

  1. 暂无评论