import { ComponentBase } from './component' import { obtainSlot } from './utils' import type { VueCons } from './index' import { Vue } from './index' type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; type MixedClass = UnionToIntersection<{ [index in keyof Mixins]: InstanceType }[number]> export function mixins(...conses: T) { class MixinsClass extends Vue { } ComponentBase({ mixins: conses.map((cons => obtainSlot(cons.prototype).cachedVueComponent)) })(MixinsClass) return MixinsClass as any as VueCons> }