如何键入类扩展名,以便该类的构造函数接受预期的类型

时间:2018-10-22 12:45:07

标签: javascript flowtype

这是我到目前为止最接近的。这是我拥有的扩展程序的精简版,但它可以说明要点。

基本上,我有一个函数可以生成扩展Immutable.Record的新类。我希望能够指定类型。

{ a: '5' }下面的代码段中,出现以下错误:

无法使用对象文字绑定到“值”的对象调用“测试”,因为对象文字[1]与“ T” [2]不兼容。)

export function ExtendModel<T: Object>(obj: T) {
  return class extends Immutable.Record({ ...obj }) {
    constructor(values?: T) {
      return super(values);
    }
  };
}

type TestFlow = {
  a?: string,
};

class Test extends ExtendModel<TestFlow>({
  a: undefined,
}) {}

const testInstance = new Test({ a: '5' })
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>

0 个答案:

没有答案