
TypeScript
๐ ํ์ ์คํฌ๋ฆฝํธ๋?
์ธ์ด๋ ํฌ๊ฒ ์ ์ ํ์ ๊ณผ ๋์ ํ์ ์ธ์ด๋ก ๊ตฌ๋ถํ ์ ์๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ์ ๋ถ์ฌํ ์ ์ ํ์ ์ธ์ด์ ๋๋ค. ๋ง์ฝ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ค๋ฉด ํ์ผ์ ๋ณํํ๋ ํธ๋์ค ํ์ผ ๊ณผ์ ์ ๊ฑฐ์ณ์ ์ฌ์ฉํฉ๋๋ค. ๊ณต์์ ์ผ๋ก๋ ํธ๋์ค ํ์ผ์ด ์๋ ์ปดํ์ผ๋๋ค๊ณ ํํํฉ๋๋ค. ์ปดํ์ผ์ ๊ฒฝ์ฐ ํ ์ธ์ด๋ก ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ก ๋ณํํ๋ ๊ฒ์ ๋ปํ๋ ๋ฐ๋ฉด, ํธ๋์ค ํ์ผ์ ๊ฒฝ์ฐ ํ ์ธ์ด๋ก ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ๋น์ทํ ์์ค์ ๋ค๋ฅธ ์ธ์ด๋ก ๋ณํํ๋ค๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Java๋ฅผ ์ปดํ์ผํ๋ฉด bytecode ์ฝ๋๊ฐ ์ถ๋ ฅ๋์ง๋ง, C++๋ฅผ ํธ๋์ค ํ์ผ ํ๋ฉด C๊ฐ ์ถ๋ ฅ๋๋ฉฐ Typescript๋ฅผ ํธ๋์ค ํ์ผ ํ๋ฉด Javascript๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. ํ์ง๋ง ๊ณต์์ ์ผ๋ก ์ปดํ์ผ๋๋ค๊ณ ํํํ๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ์ด๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.ย ย ์ด๋ฐ ์ ์ ํ์ ์ธ์ด๋ ๋ฐํ์ ์ด์ ์ ํ์ ์ด ์ฌ๋ฐ๋ฅธ์ง์ ๋ํ ๊ฒ์ฌ๋ฅผ ์ํํ๋ฉฐ, ๋์ ํ์ ์ธ์ด๋ ๋ฐํ์์ ํ๋ก๊ทธ๋จ์ ํ์ ์ด ์ฌ๋ฐ๋ฅธ์ง์ ๋ํ ๊ฒ์ฌ๋ฅผ ์คํํฉ๋๋ค. ๋ง์ฝ ๋ํผ๋ฐ์ค ์ค๋ฅ๋ฅผ ์ ๋ฐํ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋ค๋ฉด ์ ์ ์ธ์ด๋ ์ปดํ์ผํ๋ ๊ณผ์ ์์ ์ค๋ฅ๋ฅผ ์ถ๋ ฅํ๋ ๋ฐ๋ฉด ๋์ ย ์ธ์ด๋ ํด๋น ๊ตฌ๋ฌธ์ด ์คํ๋๋ ์์ ์์ ์ค๋ฅ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.ย ย ๊ทธ๋ ๋ค๋ฉด, ์ ์ ํ์ ์ธ์ด๊ฐ ๋์ ํ์ ์ธ์ด๋ณด๋ค ๋ ์ข์ ๊ฒ์ด ์๋๊ฐ ์๊ฐํด๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ผ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ค ๋ถ๋ถ์์ ์ฅ๋จ์ ์ด ์๋์ง์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ย
๐ ํ์ ์คํฌ๋ฆฝํธ์ ์ฅ์
์ฒซ ๋ฒ์งธ ์ฅ์ ์ผ๋ก๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ๋ฉด ์ปดํ์ผ์ ํตํด ์ฌ์ ์๋ฌ๋ฅผ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ๋ง์ฝย ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์นํ๋ฉด tsc๋ผ๋ ๋ช ๋ น์ด๋ก ํ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์ปดํ์ผํ ์ ์์ต๋๋ค. ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ปดํ์ผ๋ ๊ฒฐ๊ณผ๋ฌผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ถ๋ ฅ๋ฉ๋๋ค. ์ด๋ ์ปดํ์ผ ๋จ๊ณ์์ ๋ฌธ๋ฒ ์๋ฌ๋ฅผ ์ก์ ์ ์์ผ๋ฏ๋ก, ์ฌ์ํ ์ค์๋ค์ ๋ฐํ์ ์ ์ ๋ชจ๋ ์ฒดํฌํ ์ ์์ต๋๋ค. ๋ํ, tsconfig.js ํ์ผ์ ๋ช ์๋ ECMA ๋ฒ์ ์ผ๋ก ์๋์ผ๋ก ๋ณํํ ์๋ ์์ต๋๋ค.ย ย ๋ ๋ฒ์งธ ์ฅ์ ์ผ๋ก๋ ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ์ ๊ฐ์ ํํ๋ค๋ ์ ์์ ์ฅ์ ์ด ์๊น๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ณ์์ ๊ฐ์ ๋ฃ์ ๋ ํ์ ์ ์๊ฒฉํ๊ฒ ์ฒดํฌํ์ง ์๋ '์ธ๋ฏธ ํ์ ' ์ธ์ด์ ๋๋ค. ๋น์ทํ ์ธ์ด๋ก๋ ํ์ด์ฌ์ด ์๋๋ฐ, ์ด ์ธ์ด๋ค์ ๋ณ์์ ๊ฐ์ ๋์ ํ ๋ ์ ๋ ฅ๋ ๊ฐ์ ํ์ ์ ๋ณด๊ณ ํ์ ์ถ๋ก ์ ํ์ฉํด์ ์๋์ผ๋ก ํ ๋ณํ์ ํฉ๋๋ค. ์ด๋ฌํ ํน์ง์ ๊ฐ๋ฐ์ ์ ์ฅ์์ ๋ณ์๋ฅผ ์ ์ธํ ๋ ํ์ ์ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋๋ฏ๋ก ์ฝ๋ฉ์ ํธ๋ฆฌํ๊ฒ ์ง๋ง, ์์์ ์ดํด๋ณธ ๊ฐ๋ฐ์๋ค ๊ฐ์ ์ํต ๋ฌธ์ ๋ก ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํฌ ์ฌ์ง๊ฐ ์์ต๋๋ค. ํ์ง๋ง ํ์ ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ๊ฐ์ฒด์ ํ์ ์ ๊ฐ์ ํํ์ฌ ํ์ ์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์์ฒ ์ฐจ๋จํฉ๋๋ค. ย ์ธ ๋ฒ์งธ ์ฅ์ ์ผ๋ก๋ IDE์์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ ์ ์ ๋๋ค. ๋ง์ฝ VSC๋ฅผ ํ์ฉํ๋ค๋ฉด,ย ํ์ ์คํฌ๋ฆฝํธ์ ๊ด๋ จ๋ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ํ๋ฌ๊ทธ์ธ์ ํ์ฉํ ์ ์์ต๋๋ค.ย ย ๋ค ๋ฒ์งธ ์ฅ์ ์ผ๋ก๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ๋ฉด ES Next๋ฅผ ์๋ฒฝํ๊ฒ ํ์ฉํ ์ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ECMA 4 ๋ฒ์ ์์ ๋ด๋ถ ์ ์น๋ก ์ธํด ํ์คํ๋์ง ๋ชปํ๋ฉด์ ์ค๋ ์๊ฐ ๋์ ๋ฐ์ ํ์ง ๋ชปํ์ต๋๋ค. ํ์ง๋ง ๋คํํ๋ 2009๋ ํ์ฌ ์ฌ์ฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ์ด๋ผ ํ ์ ์๋ ECMA 5 ๋ฒ์ ๊ณผ NodeJS๊ฐ ๋ฑ์ฅํ๋ฉด์ ๊ฐ์ฅ ์์น์ธ๊ฐ ๋์ ์ธ๊ธฐ ์ธ์ด๋ก ๋ฐ์ ํ์ต๋๋ค. ํนํ, 2015๋ ์ ๋ฐํ๋ ECMA 2015ย (์ดํ ES Next)์์ ์๋ง์ ์ ๊ธฐ๋ฅ์ด ๋๊ฑฐ ์ถ๊ฐ๋๋ฉด์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์์ญ์ ๋ํ ์ ์๋ ๋๋ค๋์ด ๋์์ต๋๋ค. ๊ทธ๋ฌ๋, ๋๋ฌด ๋ง์ ๊ฒ์ด ๋ฐ๋ ๋๋จธ์ง ์๋ง์ ๋ชจ๋๊ณผ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ก์ด ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์ ์ ๋๋ก ์ฌ์ฉํ ์ ์์์ผ๋ฉฐ, ํธํ์ฑ์ ํด๊ฒฐํ๊ธฐ ์ํด Babel์ ์ฌ์ฉํ์ฌ ์ด์ ๋ฒ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ณํํ๋ ๋ฑ์ ๋ถํธํ ๋ฐฉ๋ฒ๋ค์ด ์ถ๊ฐ๋ก ํ์ํ๊ฒ ๋์์ต๋๋ค. ์ด๋ ํ์ ์คํฌ๋ฆฝํธ๋ ES Next ๋ฌธ๋ฒ์ ์ฌ์ฉํด๋ tsconfig.js์ ์ง์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ์ ์ผ๋ก ์๋์ผ๋ก ๋ณํํด์ฃผ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๋ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ์ ํธ๋ฆฌํ ๊ธฐ๋ฅ๋ค์ ํธํ์ฑ ๊ฑฑ์ ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. (์ผ๋ถ ๋ชจ๋์์๋ ์ฌ์ ํ Babel์ด ํ์ํ๋ค.) ย ๋ค์ฏ ๋ฒ์งธ ์ฅ์ ์ผ๋ก๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ๋ฉด ๊ฐ์ฒด ์งํฅ ์ธ์ด ์คํ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฒ์ ๋์์ ๋๋ ๊ฐ์ฒด ์งํฅ์ ๊ธฐ๋ณธ์ด ๋๋ ํด๋์ค๊ฐ ์์์ต๋๋ค. ํ์ง๋ง ๋ง์น ๊ฐ์ฒด ์งํฅ ์ธ์ด์ฒ๋ผ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ฌ์ฉํ ์ ์์์ต๋๋ค. ๋คํํ๋ ES Next๋ถํฐ Class๊ฐ ๋์ ๋์ด ์จ์ ํ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ํํ๋ฅผ ๋ ๊ฒ ๋์๋๋ฐ, ์ด๋ ํ์ ์คํฌ๋ฆฝํธ์์๋ ํ์ ์ ํฌ๋งท์ ์ง์ ํ๋ ์ธํฐํ์ด์ค, ๊ฐ์ ํด๋์ค ๋ฑ์ ๊ฐ์ฒด ์งํฅ ์ธ์ด์์ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ๋ค์ ์ถ๊ฐ๋ก ์ง์ํ๋ฉด์ ๊ฐ์ฒด ์งํฅ ๊ฐ๋ฐ์ ํ ์ ์๋๋ก ๊ตฌ์ฑ์ด ๋์ด์์ต๋๋ค. ย ์ง๊ธ๊น์ง์ ๋ด์ฉ์ ์ดํด๋ณด๋ฉด, ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค ๋๋ฌด๋ ๋งค๋ ฅ์ ์ธ ์ธ์ด์ ๋๋ค. ํ์ง๋ง ํ์ ์คํฌ๋ฆฝํธ๋ฅผย ํ์ฉํ ๋ ๋จ์ ๋ ์กด์ฌํ ๊ฒ์ ๋๋ค. ๊ทธ ๋จ์ ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๐ ํ์ ์คํฌ๋ฆฝํธ์ ๋จ์
์ฒซ ๋ฒ์งธ ๋จ์ ์ผ๋ก๋ ํ์ ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ฐ์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ์ปค์ง์๋ก ํ์ ์ค์ ์ด ๊ท์ฐฎ๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ต๋๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ๊ฐ์ ํ๋ฅผ ์ํด ์ฝ๋์ ํ์ ์ ์ง์ ํด์ผ ํฉ๋๋ค. ํ์ ์ถ๋ก ์ ํ์ฉํด์ ์๋์ผ๋ก ์ธ์ํ๊ฒ ๋ง๋ค ์ ์์ง๋ง, ๋ฐฐ์ด, ๊ฐ์ฒด, ํจ์์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ํ์ ์ ์ ์ธํด์ ๋ฏธ๋ฆฌ ์ ํํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ๋ฐํ ๋ ๋ณด๋ค ์๊ฐ์ด ๋์ฑ ์์๋ ์ ์์ต๋๋ค.ย ย ๋ ๋ฒ์งธ ๋จ์ ์ผ๋ก๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ๊ฐ์ฒด์ ๋ํด ํ์ ์ ์ง์ ํด์ผ ํ๋ค๊ณ ํ์ต๋๋ค. ๋ง์ฝ ํ์ ์ ์ง์ ํ์ง ์๋๋ค๋ฉด, ํ์ ์ ์ถ๋ก ํด์ผ ํ๋๋ฐ, ํ์ ์ ์ถ๋ก ํ๊ธฐ ํ๋ ๊ฒฝ์ฐ, ์ปดํ์ผ๋ฌ์๊ฒ ์๋ ค์ฃผ๋ ํ ๋ณํ์ ํ๊ฑฐ๋, ์ ๋ค๋ฆญ์ ์ฌ์ฉํ์ฌ ์ด๋ค ํ์ ์ด ๋ค์ด์ค๋๋ผ๋ ๋์ํ ์ ์๋๋ก ์ ์ธํด์ผ ํฉ๋๋ค. ๋ฌธ์ ๋, ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ค ๋ณด๋ฉด ์ฝ๋๊ฐ ์์ฒญ ๊ธธ์ด์ง ์ ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ย ์ธ ๋ฒ์งธ ๋จ์ ์ผ๋ก๋, ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํด๋ ๊ทผ๋ณธ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ค๋ฅ๋ ํด๊ฒฐํ ์ ์์ต๋๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ํผ์ ์ธ์ด์ด์ง๋ง, ์๋ณธ์ ์๋ฐ์คํฌ๋ฆฝํธ์ด๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐ๊ฒฌํ๊ธฐ ํ๋ ๋ํดํ ๋ฒ๊ทธ๊ฐ ์ฌ์ ํ ํ์ ์คํฌ๋ฆฝํธ์์ ๋ํ๋ ์ ์์ต๋๋ค. ย ย ย