์๋ฐ์คํฌ๋ฆฝํธ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์์ ํจ์ ๊ตฌ์ฑ ๋ฅ๋ ฅ์ ํ์ํ๊ณ , ์ ์ธ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์๋ฅผ ์ํด ์ฝ๋ ๊ฐ๋ ์ฑ๊ณผ ํจ์จ์ฑ์ ์ต์ ํํ์ธ์. ๋ณต์กํ ๋ฐ์ดํฐ ๋ณํ ๊ตฌ์ถ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์ ๊ตฌ์ฑ: ํจ์ ์ฒด์ธ ์ต์ ํ
ํ์ฌ Stage 3 ์ ์ ๋จ๊ณ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ํจ์ ๊ตฌ์ฑ์ ๋ํ ๊ฐ์ํ๋๊ณ ์ง๊ด์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ์ฌ ์ฝ๋ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค. ์ด ๋ธ๋ก๊ทธ ํฌ์คํธ์์๋ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์์ ๋ณต์ก์ฑ์ ๊น์ด ํ๊ณ ๋ค์ด, ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ด ํจ์ ์ฒด์ธ์ ์ต์ ํํ๊ณ ๋ ํจ์จ์ ์ด๊ณ ์ฐ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
ํจ์ ๊ตฌ์ฑ ์ดํดํ๊ธฐ
ํจ์ ๊ตฌ์ฑ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋๋ค. ์ฌ๋ฌ ํจ์๋ฅผ ๊ฒฐํฉํ์ฌ ์๋ก์ด ํจ์๋ฅผ ๋ง๋๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด ๊ณผ์ ์ ํ ํจ์์ ์ถ๋ ฅ์ด ๋ค๋ฅธ ํจ์์ ์ ๋ ฅ์ด ๋๋ ์ํ์ ํจ์ ๊ตฌ์ฑ๊ณผ ์ ์ฌํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์ ์์ด๋ ์ข ์ข ์ค์ฒฉ๋ ํจ์ ํธ์ถ๋ก ์ด์ด์ง๋ฉฐ, ์ด๋ ๊ธ๋ฐฉ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ด๋ ค์์ง ์ ์์ต๋๋ค.
์ซ์ ๊ฐ์ ์ผ๋ จ์ ์ฐ์ฐ(๋ ๋ฐฐ๋ก ๋ง๋ค๊ธฐ, 5 ๋ํ๊ธฐ, ์ ๊ณฑ๊ทผ ๊ตฌํ๊ธฐ)์ ํตํด ๋ณํํ๋ ค๋ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํด ๋ณด์ธ์. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๊ฐ ์๋ค๋ฉด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค:
const number = 10;
const result = Math.sqrt(addFive(double(number)));
function double(n) {
return n * 2;
}
function addFive(n) {
return n + 5;
}
์ด ์ฝ๋๋ ๊ธฐ๋ฅ์ ์ผ๋ก๋ ๋ฌธ์ ์์ง๋ง, ์ค์ฒฉ ๊ตฌ์กฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ฐ์ฅ ์์ชฝ์ ํจ์์ธ double(number)๊ฐ ๋จผ์ ์คํ๋๊ณ , ๊ทธ ๊ฒฐ๊ณผ๊ฐ addFive()๋ก ์ ๋ฌ๋๋ ์์
๋๋ค. ์ด๋ ์ฒด์ธ์ด ๊ธธ์ด์ง์๋ก ์ดํดํ๊ธฐ๊ฐ ๋์ฑ ์ด๋ ค์์ง ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์ ์๊ฐ
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์(|>)๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์ ๊ตฌ์ฑ์ ๋ ์ ํ์ ์ด๊ณ ์ฝ๊ธฐ ์ฌ์ด ๋ฐฉ์์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ผ์ชฝ์ ๊ฐ์ ๊ฐ์ ธ์ ์ค๋ฅธ์ชฝ ํจ์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํฉ๋๋ค. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ ์์ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋๋ค:
const number = 10;
const result = number |> double |> addFive |> Math.sqrt;
function double(n) {
return n * 2;
}
function addFive(n) {
return n + 5;
}
์ด ์ฝ๋๋ ํจ์ฌ ๋ ๊ฐ๋
์ฑ์ด ์ข์ต๋๋ค. ๋ฐ์ดํฐ๋ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋ฆ
๋๋ค: number๊ฐ double๋ก ํ์ดํ๋๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ addFive๋ก, ๋ง์ง๋ง์ผ๋ก ๊ทธ ๊ฒฐ๊ณผ๋ Math.sqrt๋ก ํ์ดํ๋ฉ๋๋ค. ์ด ์ ํ์ ์ธ ํ๋ฆ์ ์ฐ์ฐ ์์๋ฅผ ๋ฐ์ ํ๊ฒ ๋ฐ์ํ์ฌ ์ ์ฉ๋๋ ๋ณํ์ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๊ฒ ํฉ๋๋ค.
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์ ์ฌ์ฉ์ ์ด์
- ํฅ์๋ ๊ฐ๋ ์ฑ: ์ ํ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๊ณ ์ฐ์ฐ ์์๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ํฅ์๋ ์ ์ง๋ณด์์ฑ: ํจ์ ์ฒด์ธ ๋ณ๊ฒฝ์ ๊ตฌํํ๊ณ ๋๋ฒ๊น ํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค.
- ์ฆ๊ฐ๋ ์ฝ๋ ๋ช ํ์ฑ: ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํ๊ณ ํํ๋ ฅ์ด ํ๋ถํด์ ธ ์ธ์ง ๋ถํ๋ฅผ ์ค์ ๋๋ค.
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ด์ง: ์์ ํจ์์ ์ ์ธ์ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ ์ฌ์ฉ์ ์ฅ๋ คํฉ๋๋ค.
๊ณ ๊ธ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์ ๊ธฐ๋ฅ
ํ๋ ์ด์คํ๋ ๊ตฌ๋ฌธ
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ํ์ดํ๋ ๊ฐ์ ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ ์๋ ๋ค๋ฅธ ์์น์ ํจ์ ํธ์ถ์ ์ฝ์ ํด์ผ ํ๋ ์ํฉ์ ํฌํจํ์ฌ ๋ค์ํ ์๋๋ฆฌ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ ํ๋ ์ด์คํ๋ ๊ตฌ๋ฌธ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๋ค์ํ ํจ์ ๊ตฌ์กฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์๊ฒ ํ์์ ์ ๋๋ค.
1. ํ ํฝ ์ฐธ์กฐ(#): ์ด๊ฒ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ๋ ์ด์คํ๋์ด๋ฉฐ ํจ์๋ก ํ์ดํ๋๋ ๊ฐ์ ๋ํ๋
๋๋ค. ํ์ดํ๋ ๊ฐ์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ๋ฐฐ์นํ๋ ๊ธฐ๋ณธ ๋์์
๋๋ค.
const number = 10;
const result = number |> double |> addFive |> Math.sqrt;
์ด ๊ฒฝ์ฐ, ํ์ดํ ์ฐ์ฐ์์ ๊ธฐ๋ณธ ๋์์ด ํ์ดํ๋ ๊ฐ์ ํจ์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ฝ์ ํ๊ธฐ ๋๋ฌธ์ ํ ํฝ ์ฐธ์กฐ๊ฐ ์์์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
2. ํ๋ ์ด์คํ๋ ์ฌ์ฉ๋ฒ: ํจ์๊ฐ ๊ฐ์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ๊ธฐ๋ํ์ง ์๊ฑฐ๋ ๋ค๋ฅธ ๊ณณ์ ๋ฐฐ์นํด์ผ ํ ๋ ํ๋ ์ด์คํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ ์ง ํ์์ ์ง์ ํ๋ ํจ์๋ฅผ ์๊ฐํด ๋ณด์ธ์. ํ๋ ์ด์คํ๋๋ ํ์ดํ๋ ๋ ์ง๊ฐ ํจ์ ์ธ์ ๋ด์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐฐ์น๋๋๋ก ๋ณด์ฅํฉ๋๋ค. (์ด๋ ๋ฏธ๊ตญ์ด๋ ์ผ๋ณธ๊ณผ ๊ฐ์ด ๋ ์ง ํ์์ด ๋ค๋ฅธ ๊ตญ๊ฐ์ ๊ฐ๋ฐ์์๊ฒ ์ ์ฉ๋ฉ๋๋ค).
const date = new Date('2024-01-15');
const formattedDate = date |> new Intl.DateTimeFormat('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }).format(#);
console.log(formattedDate); // Output: Monday, January 15, 2024
์ฌ๊ธฐ์ ํ ํฝ ์ฐธ์กฐ(#)๋ .format() ๋ฉ์๋์ ์ธ์๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๊ตฌ๋ฌธ์ Date ๊ฐ์ฒด์ .format()๊ณผ ๊ฐ์ ํจ์๋ ๋ฌธ์์ด์ ์์ฉํ๋ ๋ง์ ๋ฉ์๋์ ์ค์ํ๋ฉฐ, ์ง์ญํ ๋ฐ ๊ตญ์ ํ ์์
์ ํ๋ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ธ์๊ฐ ์๋ ํจ์ ์ ์ฉ
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ์ฌ๋ฌ ์ธ์๋ฅผ ๊ฐ์ง ํจ์๋ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํ์ดํ๋ ๊ฐ์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋๋ฉฐ, ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ์ธ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
const number = 5;
const result = number |> (n => multiply(n, 3));
function multiply(n, multiplier) {
return n * multiplier;
}
console.log(result); // Output: 15
์ด ๊ฒฝ์ฐ, ํ์ดํ๋ผ์ธ์ `number`(5)๋ฅผ ์ต๋ช ํจ์๋ก ์ ๋ฌํ๊ณ , ํ์ดํ๋ ๊ฐ์ 3์ผ๋ก ๊ณฑํฉ๋๋ค. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ์ด๋ฅผ ์ค์ฒฉ๋ ํจ์ ํธ์ถ๋ณด๋ค ๋ ๋ช ํํ๊ฒ ๋ง๋ญ๋๋ค.
ํจ์ ์ฒด์ธ ์ต์ ํ: ์ค์ ์์
๋ฐ์ดํฐ ๋ณํ ์์
์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด ๋ฐฐ์ด์ด ์๊ณ , ํน์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ํ์ ํํฐ๋งํ๊ณ , ๋จ์ ์ ํ์ ์ด๋ฆ๊ณผ ๊ฐ๊ฒฉ๋ง ํฌํจํ๋๋ก ๋งคํํ ๋ค์, ํ๊ท ๊ฐ๊ฒฉ์ ๊ณ์ฐํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ์ด ์์ ์ ๋จ์ํํฉ๋๋ค.
const products = [
{ name: 'Laptop', category: 'Electronics', price: 1200 },
{ name: 'Shirt', category: 'Clothing', price: 50 },
{ name: 'Tablet', category: 'Electronics', price: 300 },
{ name: 'Jeans', category: 'Clothing', price: 75 },
];
const averagePrice = products
|> (products => products.filter(product => product.category === 'Electronics'))
|> (filteredProducts => filteredProducts.map(product => ({ name: product.name, price: product.price })))
|> (extractedPrices => extractedPrices.reduce((sum, product) => sum + product.price, 0) / extractedPrices.length);
console.log(averagePrice); // Output: 750
์ด ์์ ๋ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๊ฐ ์ด๋ฌํ ์์ ์ ์์ฐจ์ ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ์ ์ฒด ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง์ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์๊ณผ ๊ตฌ์กฐ๋ก ์์ ํ๋ ๊ธ๋ก๋ฒ ํ์๊ฒ ํนํ ์ ์ฉํฉ๋๋ค.
๋ฌธ์์ด ์กฐ์ ์์
๋ฌธ์์ด์ ์ ๋ฆฌํ๊ณ ํ์์ ์ง์ ํ๋ ์์ ์ ์๊ฐํด ๋ณด์ธ์. ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๊ณ , ์๋ฌธ์๋ก ๋ณํํ ๋ค์, ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ๋ง๋ค๊ณ ์ถ์ ์ ์์ต๋๋ค. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ์ด๋ฌํ ์ผ๋ จ์ ์์ ์ ๋จ์ํํฉ๋๋ค.
const text = ' hELLo wORLd ';
const formattedText = text
|> (str => str.trim())
|> (str => str.toLowerCase())
|> (str => str.charAt(0).toUpperCase() + str.slice(1));
console.log(formattedText); // Output: Hello world
์ด ์์ ๋ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์์ ๋ค์ฌ๋ค๋ฅํจ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ ์ข ์ข ์ฌ๋ฌ ๋จ๊ณ๊ฐ ํ์ํ ๊ตญ์ ํ๋ ๋ฌธ์์ด ๋ฐ ํ ์คํธ ์ฒ๋ฆฌ ์์ ์ ํ๋ ๊ธ๋ก๋ฒ ๊ฐ๋ฐ์์๊ฒ ํนํ ์ ์ฉํฉ๋๋ค.
๊ธ๋ก๋ฒ ๊ฐ๋ฐ ํ์ ์ํ ์ด์
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ๊ฐ๋ฐ ํ์๊ฒ ํนํ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค:
- ํฅ์๋ ํ ํ์ : ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ๊ณผ ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ ๋ค์ํ ์๊ฐ๋, ์ธ์ด ๋ฐ ์ฝ๋ฉ ๋ฐฐ๊ฒฝ์ ๊ฐ์ง ํ ๊ฐ์ ํ์ ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ฝ๋ ๋ฆฌ๋ทฐ: ํจ์ ์ฒด์ธ์ ๋ช ํ์ฑ์ ์ฝ๋๋ฅผ ๊ฒํ ํ๊ณ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ์ธ์ง ๋ถํ ๊ฐ์: ์ฝ๋ ๊ฐ๋ ์ฑ์ด ๋์์ง๋ฉด ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ด ํฅ์๋๊ณ ์ธ์ง ๋ถํ๊ฐ ์ค์ด๋ค ์ ์์ต๋๋ค.
- ๋ ๋์ ์ปค๋ฎค๋์ผ์ด์ : ์ฝ๋๊ฐ ๋ช ํํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ํ์์ผ๋ก ์์ฑ๋๊ณ ์ ์๋ ๋, ํ์๋ค์ ๋ชจ๊ตญ์ด๊ฐ ๋ค๋ฅด๋๋ผ๋ ํ ๋ด ์์ฌ์ํต์ด ๋ ํจ์จ์ ์ด๊ณ ๋ช ํํด์ง๋๋ค.
๊ณ ๋ ค์ฌํญ ๋ฐ ์ ํ์ฌํญ
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ์๋ง์ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ๊ทธ ํ๊ณ๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- Stage 3 ์ ์ ๋จ๊ณ: ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ์์ง ํ์ค ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ด ์๋๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง๊ณผ ๊ตฌํ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ๋ชจ๋ ํ๊ฒฝ์์ ์คํํ ์ ์๋ ํ์ค ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ณํํ ์ ์์ต๋๋ค.
- ๊ณผ์ฉ ๊ฐ๋ฅ์ฑ: ๊ฐ๋จํ ํจ์ ํธ์ถ์ด ๋ ์ฝ๊ธฐ ์ฌ์ด ์ํฉ์์๋ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ์ง ๋ง์ธ์.
- ์ฑ๋ฅ ์ํฅ: ๊ฒฝ์ฐ์ ๋ฐ๋ผ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ง๋ง, ์ด๋ ๋๋ฌธ ๊ฒฝ์ฐ์ด๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ต์ ํ๋ ์ ์์ต๋๋ค.
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์ ๊ตฌํ: Babel์ ์ด์ฉํ ํธ๋์คํ์ผ๋ง
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ์์ง ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๊ฒฝ์ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ์ด ์๋๋ฏ๋ก, ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฝ๋๋ฅผ ํธ๋์คํ์ผํด์ผ ํ ์ ์์ต๋๋ค. Babel์ ์ด ๋ชฉ์ ์ ํ๋ฅญํ ๋๊ตฌ์ด๋ฉฐ ์ ์ธ๊ณ์ ์ผ๋ก ์ธ๊ธฐ๊ฐ ์์ต๋๋ค. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ์ง์ํ๋๋ก Babel์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Babel ์ฝ์ด ๋ฐ CLI ์ค์น:
npm install --save-dev @babel/core @babel/cli - ํ์ดํ๋ผ์ธ ์ฐ์ฐ์ ํ๋ฌ๊ทธ์ธ ์ค์น:
npm install --save-dev @babel/plugin-proposal-pipeline-operator - Babel ๊ตฌ์ฑ: ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์
.babelrc๋๋babel.config.jsํ์ผ์ ๋ง๋ค๊ณ ๋ค์ ๊ตฌ์ฑ์ ์ถ๊ฐํ์ธ์.{ "plugins": ["@babel/plugin-proposal-pipeline-operator", { "proposal": "minimal" }] }proposal: "minimal"์ต์ ์ ์ต์์ ํธํ์ฑ์ ์ํด ๊ถ์ฅ๋ฉ๋๋ค. - ์ฝ๋ ํธ๋์คํ์ผ: Babel CLI๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ํธ๋์คํ์ผํ์ธ์.
npx babel your-file.js --out-file output.js
์ด ๊ตฌ์ฑ์ ํตํด Babel์ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ํ์ฉํ๋ ์ฝ๋๋ฅผ ๋๋ฑํ ํ์ค ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์๋ ๋ณํํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ํ๊ฒฝ์์ ํธํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์ ๋ ๋ค๋ฅธ ๊ตฌ์ฑ ๊ธฐ๋ฒ
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ๊ตฌ์ฑ ๊ธฐ๋ฒ๊ณผ ๋น๊ตํ์ฌ ์ดํดํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค.
- ์ค์ฒฉ๋ ํจ์ ํธ์ถ: ์ด๋ฏธ ๋ณด์๋ฏ์ด, ์ด๋ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ ์ฝ๋๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๊ฐ ํจ์ฌ ๋ ๋์ ์ ํ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- ํฌํผ ํจ์ ์ฌ์ฉ: ์ด ๋ฐฉ๋ฒ์ ๊ตฌ์ฑ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํจ์๋ฅผ ๋ง๋ค๊ณ ์ด๋ฆ์ ์ง์ ํด์ผ ํฉ๋๋ค. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ ๊ฐ๊ฒฐํ ์ ์์ต๋๋ค.
- Compose ํจ์: Lodash์ ๊ฐ์ ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ๋ฌ ํจ์๋ฅผ ๋ฐ์ ๊ตฌ์ฑ๋ ํจ์๋ฅผ ๋ง๋๋ compose ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ์๋ก์ด ๊ฐ๋ฐ์๋ค์ด ์ดํดํ๊ธฐ ๋ ์ฌ์ธ ์ ์์ต๋๋ค.
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ๊ฐ๋จํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ๊ตฌ๋ฌธ์ ์ ๊ณตํ์ฌ ๋ชจ๋ ๋ฐฐ๊ฒฝ์ ๊ฐ๋ฐ์๊ฐ ์ ๊ทผํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ์ ์ด ํ๋ฆ์ ์ดํดํ๋ ๋ฐ ๋๋ ์ธ์ง ๋ถํ๋ฅผ ์ค์ฌ์ค๋๋ค.
ํ์ดํ๋ผ์ธ ์ฐ์ฐ์ ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
- ๊ฐ๋ ์ฑ ์ฐ์ : ํญ์ ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ํจ์ ์ฒด์ธ์ ๋ชฉํ๋ก ํ์ธ์.
- ์ค๋ช ์ ์ธ ํจ์ ์ด๋ฆ ์ฌ์ฉ: ๊ตฌ์ฑํ๋ ํจ์๊ฐ ๊ทธ ๋ชฉ์ ์ ์ ํํ๊ฒ ๋ํ๋ด๋ ๋ช ํํ๊ณ ์ค๋ช ์ ์ธ ์ด๋ฆ์ ๊ฐ๋๋ก ํ์ธ์.
- ์ฒด์ธ ๊ธธ์ด ์ ํ: ์ง๋์น๊ฒ ๊ธด ํจ์ ์ฒด์ธ์ ํผํ๊ณ , ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋ฉ์ด๋ฆฌ๋ก ๋๋๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ๋ณต์กํ ์ฐ์ฐ์ ์ฃผ์ ๋ฌ๊ธฐ: ํจ์ ์ฒด์ธ์ด ๋ณต์กํ๋ค๋ฉด, ๋ก์ง์ ์ค๋ช ํ๋ ์ฃผ์์ ์ถ๊ฐํ์ธ์.
- ์ฒ ์ ํ ํ ์คํธ: ์๊ธฐ์น ์์ ๋์์ ๋ฐฉ์งํ๊ธฐ ์ํด ํจ์ ์ฒด์ธ์ด ์ ๋๋ก ํ ์คํธ๋์๋์ง ํ์ธํ์ธ์.
๊ฒฐ๋ก
์๋ฐ์คํฌ๋ฆฝํธ ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ํจ์ ๊ตฌ์ฑ์ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก, ํฅ์๋ ๊ฐ๋ ์ฑ, ์ ์ง๋ณด์์ฑ, ์ฝ๋ ๋ช ํ์ฑ์ ์ ๊ณตํฉ๋๋ค. ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ์ฑํํจ์ผ๋ก์จ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ ๋ ํจ์จ์ ์ด๊ณ , ์ฐ์ํ๋ฉฐ, ์ดํดํ๊ธฐ ์ฌ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ง ๋๊ตฌ์ ํจ๊ณผ์ ์ธ ์ฌ์ฉ๊ณผ ํจ๊ป ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๊ฐ์ํํ ์ ์์ต๋๋ค. ์ฝ๋ ๋ช ํ์ฑ๊ณผ ์ดํด์ ์ฉ์ด์ฑ์ ์ค์ ์ ๋๊ธฐ ๋๋ฌธ์ ์ง๋ฆฌ์ ์์น๋ ๋ฌธํ์ ๊ตฌ์ฑ์ ๊ด๊ณ์์ด ๋ชจ๋ ํ์๊ฒ ์ ์ตํ ๋๊ตฌ์ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ, ํ์ดํ๋ผ์ธ ์ฐ์ฐ์์ ๊ฐ์ ๊ธฐ๋ฅ์ ์์ฉํ๋ ๊ฒ์ ๊ฒฌ๊ณ ํ๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ๋ฉฐ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ํ ๊ฒ์ ๋๋ค. ์๊ท๋ชจ ๊ฐ์ธ ํ๋ก์ ํธ์์ ์์ ํ๋ ๋๊ท๋ชจ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ํ๋ , ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ์ฝ๋์ ์ ๋ฐ์ ์ธ ํ์ง์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ค๋ ๋ฐ๋ก ํ์ดํ๋ผ์ธ ์ฐ์ฐ์๋ฅผ ํ์ํ๊ณ ํจ์ ๊ตฌ์ฑ์ ๋ํ ๋ณด๋ค ๊ฐ์ํ๋๊ณ ์ง๊ด์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ด์ ์ ๊ฒฝํํด ๋ณด์ธ์!