我正在尝试使用immer.js从同一类的方法更改私有字段,但是在这种情况下,我需要访问的不是this
,而是访问同一类的草稿实例。这会导致错误。
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而不将字段变成公共字段?
答案 0 :(得分:0)
您可以将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;
})
}
}