如果这是任何问题的重复,我很抱歉,但是,我找不到解决我的问题的方法。
我有一个选择器,它可以获取一个带有大嵌套的大对象。我需要从中返回一些价值。如何检查字段是否存在以防止崩溃?
export const getSingleValue = createSelector(
getEntities,
(entities) => entities
.map(item => {
// need to check is field and oneMoreField, etc. exist
return item.field.oneMoreField.andMoreField.andHereIs.value || null;
})
);
B 计划 - 包装返回,try-catch
但我认为这不是一个好的选择。
Typescript 不支持开箱即用的 Elvis 运算符。
所以你有一些选择:
手动检查该属性是否存在,例如:
if(item && item.field && item.field.oneMoreField)
return item.field.oneMoreField;
// or
return item && item.field && item.field.oneMoreField;
使用代理对象:
function safe(obj) {
return new Proxy(obj, {
get: function(target, name) {
const result = target[name];
if (!!result) {
return (result instanceof Object)? safe(result) : result;
}
return safe({});
}
});
}
return safe(item.field.oneMoreField);
或者使用一个库,比如 Lodash:
_.get(item, 'field.oneMoreField')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句