Home > database >  Run public method depends on gender in Typescript
Run public method depends on gender in Typescript

Time:11-24

I'm learning Typescript and I'm trying to run method in a class. I have a Class Person, and two classes which extends the Person Class: Man and Woman.

I also have an array of persons, and I need returns hello man! or hello woman! if person is a man or if is a woman.

This is my code:

abstract class Person {
    static population: number = 0;
    constructor() {
        Person.population    ;
    }
}

class Man extends Person {
    age!: number;

    constructor(age: number) {
        super();
        this.age = age;
    }

    public helloMan() {
        console.log('Hello Man!');
    }
}

class Woman extends Person {
    age!: number;

    constructor(age: number) {
        super();
        this.age = age;
    }

    public helloWoman() {
        console.log('Hello Woman!');
    }
}

let persons: Person[] = [];
persons.push(new Man(24));
persons.push(new Woman(27));
persons.push(new Man(42));
persons.push(new Woman(35));

for(let person of persons){

    let typeOfPerson = Object.getPrototypeOf(person).constructor.name;
    switch (typeOfPerson) {
        case "Man":
            // run helloMan method
            break;
    
        case "Woman":
            // run helloWoman method
            break;
    
        default:
            break;
    }
}

¿How I can run the method of each gender?

expected result:

Hello Man!
Hello Woman!
Hello Man!
Hello Woman!

CodePudding user response:

I would use instanceof here:

if (person instanceof Man) {
    person.helloMan()
} else if (person instanceof Woman) {
    person.helloWoman()
}
  • Related