在mixin函数中使用现有的类(js构造函数)

时间:2018-12-15 09:46:20

标签: typescript mixins typescript-typings

文档中有such example个mixins类。

time    zone_1  zone_2  zone_3

(18, 1, 1, 9)   (18, 360, 0.22) (193, 2702, 0.57)   (183, 7686, 0.14)

(18, 1, 1, 10)  (140, 5320, 0.51)   (138, 8280, 0.45)   (165, 6435, 0.23)

(18, 1, 1, 11)  (32, 448, 0.46)  (75, 1275, 0.57)   (90, 2610, 0.97)

(18, 1, 1, 12)  (117, 5382, 0.88)   (72, 2376, 0.72)    (119, 5593, 0.09)

但是如果我已经有type Constructor<T> = new(...args: any[]) => T; function Tagged<T extends Constructor<{}>>(Base: T) { return class extends Base { _tag: string; constructor(...args: any[]) { super(...args); this._tag = ""; } } } 的实现该怎么办。看来我只是尝试Tagged。但是在我的情况下,Base extends Tagged在一个3维方库中具有TypeScript实现,而Tagged是由其他3维方库的工厂方法返回的JS构造函数。

混合它们的最佳方法是什么?换句话说,如何基于已经存在的类来定义mixin类(代码重用)?

1 个答案:

答案 0 :(得分:0)

在此示例中,SearchResult接受一个类,并返回一个增强的类。您不能像这样使用它:

Tagged

因为不是Base extends Tagged 扩展了Base —而是相反。

如果同时提供了TaggedBase,则应该像这样使用它们:

Tagged