๐ filter + join ๋ฉ์๋๋ก ๊ฐ๋ ์ฑ ์๋ ์ฝ๋ ์์ฑํ๊ธฐ
string | null
ํ์
์ ๊ฐ์ง๋ a
, b
๋ฅผ ์ฌ์ฉํ์ฌ a·b
๋ก ๋ํ๋ด์ผํ๋ค. ๋ง์ฝ, ๋ ์ค์ ํ๋๋ผ๋ null
์ผ ๊ฒฝ์ฐ ·
๋ฅผ ํ์ํ์ง ์๊ณ , string
ํ์
๋ง ๋ํ๋ด์ผํ๋ค. ์๋ฅผ ๋ค์ด a = 'foo'
์ด๊ณ , b = 'bar'
์ผ ๋ ๋ ๋ค ๊ฐ์ด ์กด์ฌํ๋ฉด foo·bar
๋ก, a
ํ์
๋ง ์กด์ฌํ๋ฉด foo
, b
ํ์
๋ง ์กด์ฌํ๋ฉด bar
, a
์ b
๋ ๋ค ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ null
ํน์ ''์ ๋ํ๋ด์ผํ๋ค. ์ด๋ด ๋ ์ด๋ป๊ฒ ๊ฐ๋
์ฑ ์๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ๊ฒ์ธ๊ฐ?
๋ฆฌ์กํธ์์ ์ฌ์ฉํ ๋ AS-IS
๋ ์กฐ๊ฑด์๊ณผ join
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ a && b ? [a, b].join('·') : a || b
๋ก ๋ํ๋๋๋ฐ, ๊ฐ๋
์ฑ์ด ๋๋ฌด ๋จ์ด์ก๋ค. ๊ทธ๋์ TO-BE ์ฒ๋ผ filter + join
๋ฉ์๋๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๋ ๊ฐ๋
์ฑ์ด ์ด์ ๋ณด๋ค ์ฆ๊ฐํ์๋ค.
const category: string | null = '๊ฐ๋ฐ';
const language: string | null = 'Typescript';
// AS-IS
const result1 =
category && language ? [category, language].join('·') : category || language
// TO-BE
const result2 = [category, language].filter(Boolean).join('·')
// category, language ๋ชจ๋ ๊ฐ์ด ์๋๊ฒฝ์ฐ
๐๐พ result1: ๊ฐ๋ฐ·Typescript
๐๐พ result2: ๊ฐ๋ฐ·Typescript
// category๋ ์กด์ฌํ๊ณ language๋ null์ธ ๊ฒฝ์ฐ
๐๐พ result1: Typescript
๐๐พ result2: Typescript
// category๋ null์ด๊ณ language๋ ์กด์ฌํ๋ ๊ฒฝ์ฐ
๐๐พ result1: ๊ฐ๋ฐ
๐๐พ result2: ๊ฐ๋ฐ
// ๋ ๋ค null์ธ ๊ฒฝ์ฐ
๐๐พ result1: null
๐๐พ result2: ''
๋๊ธ