这是我到目前为止最接近的。这是我拥有的扩展程序的精简版,但它可以说明要点。
基本上,我有一个函数可以生成扩展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>