3

i tried to use optional chaining in javascript but my eslint rules causing error .

Error : Unsafe usage of optional chaining. If it short-circuits with 'undefined' the evaluation will throw TypeError no-unsafe-optional-chaining

const { homeAddress, officeAddress} = Employee?.addresses;

Error : Unsafe arithmetic operation on optional chaining. It can result in NaN no-unsafe-optional-chaining

const AddressesCount = homeAddress?.length + officeAddress?.length 

how can I fix this issue ? I do not want to violate the rule

V2rson
  • 137
  • 1
  • 10

3 Answers3

5

There are multiple ways to fix this, or you can use /* eslint-disable-next-line no-unsafe-optional-chaining */. Which I would not advise but it will fix the errors. The best way to fix this in my opinion is by using const { homeAddress, officeAddress } = Employee?.addressess || {};. What you can also try is const { addresses: { homeAddress, officeAddress } } = Employee;

Lars Vonk
  • 623
  • 5
  • 13
3

for the second issue:

const AddressesCount = (homeAddress?.length || 0) + (officeAddress?.length || 0 )
Zach Jensz
  • 3,650
  • 5
  • 15
  • 30
V2rson
  • 137
  • 1
  • 10
1

Provide a default value

const { addresses: { homeAddress, officeAddress} = { homeAddress: '', officeAddress: ''} } = Employee

console.log(homeAddress) // <empty string>
console.log(officeAddress) // <empty string>

This way you're making sure keys exists and you'll be getting a default value(empty string in this case) and your code doesn't breaks.

pope_maverick
  • 902
  • 8
  • 15