javascriptclassabstract-data-type

Adding constraints of a specific data type in class declaration in javascript


I have the following code exercise:

Create class Intern with next fields: Name(String) Surname(String) laziness(number from 20 to 50) Curiosity (number from 0 to 100) Skill (number from 0 to 100) Irresponsibility (float number from 0.0 to 1.0) For this class create method that calculate “mark” for intern, that is calculated by formula

Question: How can I add constraints to the original data type in a class? like int a, but in range from 20 to 50. or string. Here is my code without constraints:

class Intern {
constructor(name, surname, laziness, curiosity, skill, irresponsibility) {
    this.name = name
    this.surname = surname
    this.laziness = laziness
    this.curiosity = curiosity 
    this.skill = skill 
    this.irresponsibility = irresponsibility 
}
getMark() {
    let mark = (((this.skill+this.curiosity)*(1.5 - this.irresponsability))/(this.laziness*0.25));
   return mark
}

}


Solution

  • What would you like to happen if the given value is outside the constraints? Should the Intern get a default value?

    I would make if statements for every attribute and check if the given value is bigger than the lowest constraint and smaller than the highest:

    class Intern {
    constructor(name, surname, laziness, curiosity, skill, irresponsibility) {
        this.name = name
        this.surname = surname
    if(laziness<=50 && laziness>=20){
        this.laziness = laziness
    }
    if(curiosity<=100 && curiosity>=0){
        this.curiosity = curiosity 
        this.skill = skill 
        this.irresponsibility = irresponsibility 
    }
    getMark() {
        let mark = (((this.skill+this.curiosity)*(1.5 - this.irresponsability))/(this.laziness*0.25));
       return mark
    }
    

    the <= and >= operator checks if the value is smaller than or equal to or bigger than or equal to.