オプションの手作りチェーン🤓


私の国(ブラジル)では、猫と犬狩りをしていないと言っている.
私は、我々がノードの最新バージョンを更新することができなかったプロジェクトに取り組んでいましたbabel または実験フラグさえ--harmony , 何故ならエンタープライズの制限があったからです.

だから、創造性を使用する時間です✨
const optionalChainingByPath = (object, path) => {
  const pathSplitted = path.split('.')

  const [firstKey] = pathSplitted

 if (object[firstKey] == null || object[firstKey] ==='' ) { return null }
  if (typeof object[firstKey] === 'object') {
    pathSplitted.shift()
    return optionalChainningByPath(object[firstKey], pathSplitted.join('.'))
  }

  return object[firstKey]
}


使用法:
const makeResponse = patient => ({
  name: optionalChainingByPath(patient, 'personalInformation.name'),
  gender: optionalChainingByPath(patient, 'personalInformation.gender'),
  cardNumber: optionalChainingByPath(patient, 'personalInformation.cardNumber')
})

大丈夫だ😒

涼しくしましょう🥳
この関数をファントム関数に変換するために部分関数を使用します✨
const optionalChainingByPath = object => path => {
  const pathSplitted = path.split('.')

  const [firstKey] = pathSplitted

  if (object[firstKey] == null || object[firstKey] === '') {
    return null
  }

  if (typeof object[firstKey] === 'object') {
    pathSplitted.shift()
    return optionalChainingByPath(object[firstKey], pathSplitted.join('.'))
  }

  return object[firstKey]
}

使用法:
const makeResponse = patient => {
  return {
    name: optionalChaining('personalInformation.name'),
    gender: optionalChaining('personalInformation.gender'),
    cardNumber: optionalChaining('personalInformation.cardNumber')
  }
}
チャームのような音はありませんか?