0

像这样, 需要拿到传入参数的padding值, 但是不确定是否传入了eleStyle, 更不确定eleStyle中的其他属性是否传入, 目前使用三元表达式进行判断, 但依然有些繁琐...

data: {
    show: true,
    //可能传入的参数
    eleStyle: {
        //以下某一参数均有可能不传
        width: 100,
        height: 100,
        padding: 20,
    }
}
let padding = eleStyle && eleStyle.padding ? eleStyle.padding : 10
//当eleStyle.padding为0时, 所得到的padding值仍为默认, 所以可能应该是下面这种:
let padding = eleStyle && eleStyle.padding !== undefined ? eleStyle.padding : 10

如果需要的参数取自更深层的对象, 那这样写也显得十分臃肿, 所以请教一下有没有什么好的方法解决这种问题...

4 天前提问

查看全部 5 个回答

1

JS确实没啥好办法
TS3.7中提供了一种用于处理你这种需求的方案

interface EleStyle{
    width?:Number,
    height?:Number,
    padding?:Number
}
interface Data {
    show:Boolean,
    eleStyle?:EleStyle
}

let data:Data = {
    show:true,
    eleStyle:{
        width: 100,
        height: 100
    }
}

console.log(data.eleStyle?.padding);

推荐答案

0

已采纳
let padding = 'eleStyle.padding'.split('.').reduce((res,key)=>{return res != null ? res[key] : null},data)
padding = padding != null ? padding : 10;

推广链接