TS: вернуть ключи объекта в зависимости от входных параметров - PullRequest
0 голосов
/ 07 мая 2020

У меня есть следующая функция:

function getObject(inputObject, additionalParam1?, additionalParam2? ) {
  const returnObject = {...inputObject }

  if(additionalParam1) { 
    returnObject.additionalParam1 = additionalParam1
  }

  if(additionalParam2) { 
    returnObject.additionalParam2 = additionalParam2
  }

  return returnObject
}

Она работает нормально, но код мне кажется некрасивым из-за всех операторов if. У меня также есть внутренняя проверка возвращаемого значения, и она ожидает, что additionalParam1 и additionalParam2 будут иметь точные правильные типы или вообще не быть там, поэтому иметь что-то вроде:

additionalParam1 = undefined / null 

внутри returnObject не является вариант.

Есть ли способ сделать код красивее и читабельнее?

1 Ответ

1 голос
/ 07 мая 2020

вы можете рассматривать что-то вроде этого:

function getObject(inputObject, additionalParam1?, additionalParam2?) {
    return {
        ...inputObject,
        ...additionalParam1 ? {additionalParam1} : {},
        ...additionalParam2 ? {additionalParam2} : {}
    }
}
...