Is there a way to condense parameter type options in a method in TypeScript?

Viewed 18

Is there an effective and standard way to condense type options of a parameter in a method?

export class Guitar {

    protected strings: stringsMade = "Dunlop";
    protected woodStrain: strains = "Maple";
    protected bridge: FloydRose | Duncan | Compton | Kahler | string = "Stock";

    [...]

    protected setBridge(made: FloydRose | FloydRoseParameters | Duncan | DuncanParameters | Compton | ComptonParameters | Kahler | KahlerParameters | string = "Stock") {
        if (made) {
            if (typeof made === "object") {
                if (made instanceof FloydRose) {...}
                else if (made instanceof Duncan) {...}
                else if (made instanceof Compton) {...}
                else if (made instanceof Kahler) {...}
                else { // then made is an interface
                    if (isFloydRoseParameters(made)) {...}
                    else if (isDuncanParameters(made)) {...}
                    else if (isComptonParameters(made)) {...}
                    else if (isKahlerParameters(made)) {...}
                }
            }
            else if (typeof made === "string") {
                this.bridge = made;
            }
        }

    [...]

}

export default Guitar;

As you can see, for a simple setter, it gets complicated fast. Is there a way to build maybe an interface of Type Options, or another way to simply pass as a type to made parameters to simplify the method definition?

0 Answers
Related