import { Mixin } from 'ts-mixer' class Foo implements Partial { public fromFoo = 'fromFoo' protected makeFoo() { const singleAs = this as FooBar const doubleAs = (this as unknown as FooBar).fromBar return `foo${this.fromBar}` } } class Bar { public fromBar = 'fromBar' protected mixed = (this as unknown as FooBar) protected makeBar() { return `bar${this.mixed.fromFoo}` } } class FooBar extends Mixin(Foo, Bar) { public makeFooBar() { return this.makeFoo() + this.makeBar() } } const fooBar = new FooBar() console.log(fooBar.makeFooBar()) // "foobar"