compact ํจ์๋ ๋ฐฐ์ด์์ falsy ๊ฐ(null, undefined, false, 0, '', NaN ๋ฑ)์ ์ ๊ฑฐํ์ฌ ์ ํจํ ๊ฐ์ฒด๋ง ํฌํจํ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ ์ ํธ๋ฆฌํฐ ํจ์์ ๋๋ค. ์ด๋ ๋ฐฐ์ด์ ์ ๋ฆฌํ๊ฑฐ๋ ํํฐ๋งํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
[TECH-QA] ES6+์์ ๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง(...rest)
odash์์ _.omit๊ณผ _.pick์ ๊ฐ์ฒด์์ ํน์ ์์ฑ์ ํํฐ๋งํ ๋ ์ฌ์ฉํ๋ ์ ํธ๋ฆฌํฐ ํจ์๋ก, ๋น์ทํ ๋ชฉ์ ์ ๊ฐ์ง์ง๋ง ๋์ ๋ฐฉ์์ด ๋ฐ๋์ ๋๋ค. ์๋์ ์ฐจ์ด์ ์ ๊ฐ๋จํ ์ค๋ช ํฉ๋๋ค.
[TECH-QA] class-variance-authority ๋ผ์ด๋ธ๋ฌ๋ฆฌ
CVA๋ JavaScript/TypeScript ๊ธฐ๋ฐ์ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, CSS ํด๋์ค ์ด๋ฆ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ปดํฌ๋ํธ์ ๋ค์ํ ์คํ์ผ ๋ณํ(variants)์ ์ฝ๊ฒ ์ ์ํ ์ ์๋๋ก ๋์์ค๋๋ค. ํนํ Tailwind CSS์ ๊ฐ์ ์ ํธ๋ฆฌํฐ ํผ์คํธ CSS ํ๋ ์์ํฌ์ ํจ๊ป ์ฌ์ฉ๋ ๋ ์ ์ฉํ๋ฉฐ, React, Vue, Angular ๋ฑ ๋ค์ํ ํ๋ ์์ํฌ์ ํธํ๋ฉ๋๋ค.
[TECH-QA] React์์ SVG ์์ด์ฝ ๋ค๋ฃจ๊ธฐ: ์ค์ฉ์ ์ธ ์์ ์ ํ
React์์ ref๋ฅผ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ฑํ์ฌ ์์ ์ปดํฌ๋ํธ(์: _Icon)์ ์ ๋ฌํ๊ณ , ์ด๋ฅผ ํตํด SVG์ ๊ฐ์ DOM ์์์ ์ง์ ์ ๊ทผํ๋ ์ด์ ์ ์ฉ๋๋ฅผ ๊ฐ๋จํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
[TECH-QA] TypeScript๋ก ๊น๋ํ ์ฟผ๋ฆฌ ๋ฌธ์์ด ๋ง๋ค๊ธฐ: Record<string, never> ํ์ฉ๋ฒ
qsStringify์ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ํํ๋ ์๋ก์ด ํจ์ buildQueryString๋ฅผ TypeScript๋ก ์์ฑํ ์์ ์ ๋๋ค. ์ด ํจ์๋ ์ ๋ ฅ ๊ฐ์ฒด๋ฅผ ์ฟผ๋ฆฌ ๋ฌธ์์ด๋ก ๋ณํํ๋ฉฐ, ์ ํจํ์ง ์์ ๊ฐ(null, undefined, ๋น ๋ฌธ์์ด/๋ฐฐ์ด)์ ์ ๊ฑฐํฉ๋๋ค. Record<string, never>๋ฅผ ๊ธฐ๋ณธ ํ์ ์ผ๋ก ์ฌ์ฉํด ๋น ๊ฐ์ฒด๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.