ํ์
์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ ์ธ์ด์ด๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์ํ์ ์ ์
๋๋ค. ์ ์ ํ์
์ผ๋ก ์ปดํ์ผ ๋จ๊ณ์์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ ์ ์๋ ์ฅ์ ์ด ์๊ณ ๊ฐ๋ ฅํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํฉ๋๋ค.
ํ์ ์คํฌ๋ฆฝํธ ํน์ง
- ํ์ ์คํฌ๋ฆฝํธ์ ๊ฐ์ฅ ํฐ ํน์ง์ ์ ์ ํ์ ์์คํ ์ ๋์ ํ๋ค๋ ์ ์ ๋๋ค. ์ด๋ ๋ณ์, ํจ์, ๊ฐ์ฒด ๋ฑ์ ํ์ ์ ์ฝ๋ ์์ฑ ๋จ๊ณ์์ ๋ช ์์ ์ผ๋ก ์ ์ํด ์ค๋๋ค. ์ด๋ ๊ฒ ์ ์๋ ํ์ ์ ์ปดํ์ผ ๋จ๊ณ์์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ ์ ์๋๋ก ๋์์ฃผ๋ฉฐ, ๋ฐํ์์์ ๋ฐ์ํ ์ ์๋ ์ ์ฌ์ ์ธ ๋ฒ๊ทธ๋ฅผ ์ฌ์ ์ ์ค์ด๋ ๋ฐ ํฐ ์ฅ์ ์ด ์์ต๋๋ค.
- ํ์ ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ ฅํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํฉ๋๋ค. ํด๋์ค(Class), ์ธํฐํ์ด์ค(Interface), ์ ๋ค๋ฆญ(Generics), ๋ชจ๋(Module)๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํฉ๋๋ค.์๋ฅผ ๋ค์ด, ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด์ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ ์ ์ํ ์ ์๊ณ , ์ ๋ค๋ฆญ์ ํตํด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉด์๋ ํ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ํ์ ์คํฌ๋ฆฝํธ๋ ES6(ECMAScript 2015) ๋ฐ ๊ทธ ์ดํ์ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด ๋ฐ๋ฒจ(Babel)๊ณผ ๊ฐ์ ๋ณ๋์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ํ์ ์์ด, ํ์ ์คํฌ๋ฆฝํธ ์์ฒด์ ์ผ๋ก ์ต์ ECMAScript ๋ฌธ๋ฒ์ ๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ก ๋ณํํด์ค๋๋ค. ์ด๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๋จ์ํํ๊ณ ์์ฐ์ฑ์ ๋์ด๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค.
- ๋ช ์์ ์ธ ์ ์ ํ์ ์ง์ ์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๋ฉฐ, ํนํ ํ์ ํ๊ฒฝ์์ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์ ์ง๋ณด์ํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ์๋ฅผ ๋ค์ด, ํจ์์ ๋งค๊ฐ๋ณ์๋ ๋ฐํ๊ฐ์ ํ์ ์ ๋ช ์ํ๋ฉด ํด๋น ํจ์๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋์ง ๋ฐ๋ก ์ ์ ์์ด ๋๋ฒ๊น ๊ณผ์ ๋ ํจ์ฌ ์์ํด์ง๋๋ค. ๊ฒ๋ค๊ฐ ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ์ถ๋ก (Type Inference) ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ, ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ํ์ ์ ์ง์ ๋ช ์ํ์ง ์๋๋ผ๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ฌธ๋งฅ์ ํตํด ํ์ ์ ์๋์ผ๋ก ์ถ๋ก ํ๊ฒ ํจ์ผ๋ก์จ ํธ๋ฆฌํจ๊ณผ ์์ ์ฑ์ ๋์์ ์ ๊ณตํฉ๋๋ค.
ํ์ ์ถ๋ก ์ด๋? ๋ณ์ ์ ์ธ์์์ ํ์ ์ถ๋ก : ๋ณ์๋ฅผ ์ด๊ธฐํํ ๋ ๊ฐ์ ํ ๋นํ๋ฉด, ํ์ ์คํฌ๋ฆฝํธ๋ ํด๋น ๊ฐ์ ํ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ณ์์ ํ์ ์ ์ถ๋ก ํฉ๋๋ค. ํจ์ ๋ฐํ ํ์ ์ถ๋ก :ํจ์์ ๋ฐํ๊ฐ์ ๋ช ์์ ์ผ๋ก ํ์ ์ผ๋ก ์ ์ธํ์ง ์์๋, ํ์ ์คํฌ๋ฆฝํธ๋ ํจ์ ๋ด๋ถ์ ๋ก์ง์ ๋ถ์ํด ๋ฐํ ํ์ ์ ์ถ๋ก ํฉ๋๋ค. ๊ฐ์ฒด ๋ฆฌํฐ๋ด์์์ ํ์ ์ถ๋ก :๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๊ฐ ์์ฑ์ ํ์ ์ ๋ช ์ํ์ง ์์๋, ์ด๊ธฐํ๋ ๊ฐ์ ๋ฐ๋ผ ํ์ ์ด ์ถ๋ก ๋ฉ๋๋ค.
์ถ๊ฐ์ ์ผ๋ก, ํ์
์คํฌ๋ฆฝํธ๋ ๋ฐฉ๋ํ ์ํ๊ณ๋ฅผ ์๋ํฉ๋๋ค. ํ์
์ ์ ํ์ผ(.d.ts)์ ํตํด ๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: React, Lodash ๋ฑ)์์ ํตํฉ์ด ์ฉ์ดํ๋ฉฐ, ์ปค๋ฎค๋ํฐ์์ ์ ๊ณตํ๋ DefinitelyTyped ํ๋ก์ ํธ๋ฅผ ํตํด ์๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ์
์ ์๋ฅผ ์ฝ๊ฒ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ํ์
์คํฌ๋ฆฝํธ๋ ํ๋ก ํธ์๋(React, Angular, Vue.js)์ ๋ฐฑ์๋(Node.js) ๊ฐ๋ฐ ๋ชจ๋์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ํ๋ ์น ๊ฐ๋ฐ์์ ํ์์ ์ธ ๋๊ตฌ๋ก ์๋ฆฌ ์ก์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ํ์
์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ์ฐ์ฑ์ ์ ์งํ๋ฉด์๋ ์ ์ ํ์
์ ์์ ์ฑ๊ณผ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ ฅํจ์ ๋ํ ์ธ์ด๋ก, ์ฝ๋ ํ์ง์ ๋์ด๊ณ ๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ค๋ ๊ฐ๋ฐ์๋ค์๊ฒ ์ด์์ ์ธ ์ ํ์
๋๋ค.