我试图用immer.js更改同一类的方法中的私有字段,但在本例中,我需要访问的不是this,而是同一类的draft实例。这会导致错误。
import produce from "immer";
export class Test {
private foo: number = 0;
bar(foo: number): Test {
return produce<Test>(this, draft => {
draft.foo = foo; // <- TS2339: Property 'foo' does not exist on type '{ bar: (foo: number) => Test; }'.
})
}
}有什么方法可以在不将字段转换为公共字段的情况下使用immer.js吗?
发布于 2019-10-24 18:25:31
您可以将draft强制转换为any,然后访问无类型的foo。
import produce from "immer";
export class Test {
private foo: number = 0;
bar(foo: number): Test {
return produce<Test>(this, draft => {
(draft as any).foo = foo;
})
}
}https://stackoverflow.com/questions/58539244
复制相似问题