질문

인자가 nullable or empty string('') 일 경우 pipe or compose 중간에 그 뒤로 실행해야 할 함수들을 건너 뛰고 지정한 기본값을 리턴 하게 하거나, null 그 자체를 return 하게 할 수 있을 까요? 단 이때 type 추론이 될 수 있었으면 좋겠습니다. 아무래도 함수형의 monad 랑 연관이 있는 것 같은데, 이 부분을 구현하려면 어떤 부분을 digging 해야 할까요? 관련해서 어떤 key aword로 검색해야 제가 원하는 답을 찾을 수 있을 까요?

const getValue = pipe(Number, numberWithComma, defaultTo(''))
const getValue2 = pipe(Number, numberWithComma, defaultTo(null))

getValue('100000') // '10,000'
getValue(null) // ''
getValue2(undefined) // null

배경(의도)

api 에서 넘어 온 값을 화면(view) 에서 쓰기 좋게 변환해야 하는데, 그 변환 과정이 여러번 필요한 상황입니다.

e.g.

  1. grpc 를 쓰기 때문에 int64에 해당하는 값은 '1231230000' 같이 문자열로 전달됩니다. 이를 1차적으로 Number 함수와 Math 함수를 써서 number 타입으로 형변환을 해줘야합니다.

  2. 여기에 3자릿수 마다 comma 를 붙이거나 또 다른 formatting 을 해줘야 할 일이 있습니다.

  3. 가끔 넘어오는 값이 nullable 일 경우도 있어서 nullable 일 경우 기본값에 대한 처리도 해야 합니다.

const numberfromApi = '1231230000'  // 2f 
const parsedNumber = Number(value) / (Math.pow(10, 2)); // 12312300
const formattedNumber = numberWithComma(parsedNumber) 

이 부분을 깔끔하게 해결하고 싶어 방법을 찾아본게 함수합성(pipe, compose) 으로 처리하는 방법이었습니다. 다만 함수 합성 상황에서 인자가 nullable(null, undefined) or ''"(empty string) 한 경우에 대해 default 로 처리하는 방법을 몰라 이렇게 질문 드립니다.

답변들

Untitled