Multiple inheritance workarounds Multiple inheritance workarounds typescript typescript

Multiple inheritance workarounds


Declaring a constructor on the same interface as the instance members doesn't really make much sense -- if you're going to pass in a type dynamically to use in a constructor, it's the static side of the class that would be restricted. What you would want to do is probably something like this:

interface Colorable {    colorize(c: string): void;}interface Countable {    count: number;}interface ColorCountable extends Colorable, Countable {}interface ColorCountableCreator {    new(info: {color: string; count: number}): ColorCountable;}class ColorCounted implements ColorCountable {    count: number;    colorize(s: string) { }    constructor(info: {color: string; count: number}) {        // ...    }}function makeThings(c: ColorCountableCreator) {    var results: ColorCountable[];    for(var i = 0; i < 10; i++) {        results.push(new c({color: 'blue', count: i}));    }    return results;}var items = makeThings(ColorCounted);console.log(items[0].count);

See also How does typescript interfaces with construct signatures work?