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
3 Answers
Reset to default 5Original 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;
}
}