如何流式混合类工厂?

时间:2019-03-27 13:51:05

标签: javascript flowtype

我要迁移到Flow,这个内部JavaScript框架高度依赖ES6 mix-in,并且类工厂的结构类似于:

function Mixin(Base) {
  return class extend Base {

    constructor() { super() }

    mixin() { … }

  }
}

但是我无法为此类方法编写正确的泛型注释。

到目前为止,我最好的猜测是:


interface IMixin {

  mixin():void;

}

function Mixin<T>(Base: Class<T>): Class<T & IMixin> {
  return class extend Base implements IMixin {

    constructor() { super() }

    mixin() { … }

  }
}

https://stackoverflow.com/a/33030114/739773松散相关,但是无论我测试的微小变化如何,均会导致Flow抱怨Flow: Cannot return 'class { ... }' because class '<<anonymous class>>' [1] is incompatible with 'T' [2].

我想念什么?缺少禁用此类功能的类型检查的任何提示吗?

0 个答案:

没有答案