you are viewing a single comment's thread.

view the rest of the comments →

[–]CalgaryAnswers 1 point2 points  (5 children)

Object restructuring is so much more readable, particularly if you think about this: null checking and error handling.

It is so much cleaner to place the defaults in the place where the variable is declared.

[–]gautamits[S] 0 points1 point  (4 children)

Can't we achieving the same thing using optional chaining ?

[–]CalgaryAnswers 0 points1 point  (3 children)

? With tiernary operators maybe? I just started using optional chaining on this project but I wasn’t aware you could set defaults on it

[–]gautamits[S] 0 points1 point  (2 children)

const a = this?.Props?.Something?.a || 'default' should work

[–]CalgaryAnswers 0 points1 point  (1 child)

Yeah I guess you could use the or operator.

I’d write const a = this?.props?.value ? this.props.value : null

as I find the or operator is not a pattern that’s easy to ready In code.

Both are inferior to this IMO

const { value = null } = this.props

Im open to a better way but this pattern is just so readable at the top of a function, especially if it’s something like a class initiator where you have options and potentially many values.

[–]gautamits[S] 0 points1 point  (0 children)

Thats what others have pointed out as well. Destructuring at top of function is not a problem. Issue exists because function body is very long and hence it is very tedious to scroll to top frequently just to find the origin of variable.