【发布时间】:2021-05-29 16:05:52
【问题描述】:
考虑以下代码,其中第 2 行以Property 'newProperty' does not exist on type 'WritableDraft<MyObject>'. TS7053 失败
// data is of type MyObject which until now has only a property myNumber
const payload = produce(data, (draft) => {
draft['newProperty'] = 'test'; // Property 'newProperty' does not exist on type 'WritableDraft<MyObject>'. TS7053
});
如何动态地向草稿添加新属性或将草稿的类型更改为已包含newProperty 的类型?我不想在MyObject 类型本身中有newProperty。
【问题讨论】:
-
这不是一个很好的解决方案,但你不能把它投给
any吗? -
是的,这行得通,谢谢。但是我想知道是否有更好/官方的方法来做到这一点?
-
stackoverflow.com/questions/12710905/…,我很确定你可能想看看这个。如果您需要在 for 循环中添加任何新属性。这个问题实际上很常见,但所有解决方案似乎都违背了打字稿的最初目的。我不认为有一种真正优雅的方式来做到这一点。否则你只需要添加一个新属性作为参数的接口。
-
你似乎想像一本简单的字典一样操作。问题当然是,之后您将如何处理该对象,它是否有意义(您在此处显示的代码之后不会为消费者提供任何好处,他们不知道它现在具有新属性,所以什么是你的最终目标)
标签: typescript immer.js