Reputation: 35
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;
}
}
Upvotes: 2
Views: 20483
Reputation: 5188
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
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
}
Upvotes: 5
Reputation: 1
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;
}
}
Upvotes: 0
Reputation: 1732
Remove the extra space of this. id = value;
. Change it to this.id = value;
.
Upvotes: 0