首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用未定义基对象的Immer.js

使用未定义基对象的Immer.js
EN

Stack Overflow用户
提问于 2019-06-21 08:30:40
回答 1查看 1.2K关注 0票数 1

我试图使用immer.js在一个对象中设置一个属性,这个属性可能是未定义的--就像它的子对象一样。我能确保对象以某种方式被初始化吗?

代码语言:javascript
复制
type Config = {
  personal?: {
    navigate?: boolean;
  }
};

const myFunc = (configuration?: Config): void => {
  const mergedConfig: Config = produce(configuration, (draft): void => {
    draft.personal.navigate = true;
  });
};

使用这段代码,我会收到一个类型记录错误,上面写着Object 'draft' is possibly 'undefined'

EN

回答 1

Stack Overflow用户

发布于 2019-11-08 15:55:50

当涉及到该特定错误时,可以通过将非空断言运算符添加到draftpersonal属性中来抑制该错误,结果如下:

代码语言:javascript
复制
draft!.personal!.navigate = true;

但是,我认为您应该添加更多的代码来验证那些可能是未定义的/空属性,否则您将遇到一个错误,例如

代码语言:javascript
复制
TypeError: Cannot read property 'personal' of undefined

代码语言:javascript
复制
TypeError: Cannot set property 'navigate' of undefined

当使用非空断言操作符时,您作为开发人员告诉编译器--“是的,我确信这个值是定义的”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56699660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档