我试图使用immer.js在一个对象中设置一个属性,这个属性可能是未定义的--就像它的子对象一样。我能确保对象以某种方式被初始化吗?
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'。
发布于 2019-11-08 15:55:50
当涉及到该特定错误时,可以通过将非空断言运算符添加到draft和personal属性中来抑制该错误,结果如下:
draft!.personal!.navigate = true;但是,我认为您应该添加更多的代码来验证那些可能是未定义的/空属性,否则您将遇到一个错误,例如
TypeError: Cannot read property 'personal' of undefined或
TypeError: Cannot set property 'navigate' of undefined当使用非空断言操作符时,您作为开发人员告诉编译器--“是的,我确信这个值是定义的”。
https://stackoverflow.com/questions/56699660
复制相似问题