如何用 TypeScript 表示混合

How to represent mixins with TypeScript

我正在编写自定义 mixin 例程,它接受对象的可变参数:

type HasIndex = {[key:string]:any};

// type RetType = ?

const mixinAll = (...v: HasIndex[]): RetType => {
   return v.reduce((a,b) => doMixing(a,b,new Set()), {});
});

所以我的问题是 - 如何表示 mixinAll 的 return 值?有没有办法用 TypeScript 表示混合类型?与对 Object.assign.

执行相同操作非常相似

如果您查看 Object.assign 的定义,这几乎可以回答问题:

interface ObjectConstructor {
 assign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
}

简而言之,使用 & 运算符创建交集类型 - 不幸的是,似乎无法创建比这更好的 finer-grained。