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?