Javascript + Type = TypeScript
ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ฒด ์ธ์ด์ ํ๋๋ก์ ์๋ฐ์คํฌ๋ฆฝํธ์ Superset(์์ํ์ฅ)์ด๊ณ , Microsoft์์ ๋ฐํํ ์คํ์์ค๋ก, ์ ์ ํ์ดํ์ ์ง์ํ๋ฉฐ ES6์ ํด๋์ค, ๋ชจ๋ ๋ฑ๊ณผ ES7์ Decorator ๋ฑ์ ์ง์
๋์จํ ํ์ ์ ์ธ์ด์ธ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ๋ง๋ ํ๋ก์ ํธ์์๋ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ฝ๋๊ฐ ๋ณต์กํด์ง๊ณ , ๋๋ฒ๊ทธ์ ํ ์คํธ ๊ณต์๊ฐ ์ฆ๊ฐํ๋ ๋ฌธ์ ๊ฐ ์์ด ์ด๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋จ์ ์ ๊ทน๋ณตํ๊ณ ์ AltJs(์๋ฐ์คํฌ๋ฆฝํธ ๋์ฒด ์ธ์ด)์ธ ํ์ ์คํฌ๋ฆฝํธ ๊ฐ ๋ฑ์ฅํ๋ค๊ณ ํ๋ค.
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- Compiled Language
- ์ ํต์ ์ธ Compiled Language์ ๋ค๋ฆ (Compile, Linking, Binary ๊ณผ์ ์ด ์์)
- Transpile์ ๋ ๊ฐ๊น์
- ๋ฉํํ๋ก๊ทธ๋๋ฐ (๋ค๋ฅธ์ธ์ด๋ก ๋ณํ๋์ด ํ๋ก์ธ์ค๊ฐ ์งํ๋๋๊ฒ)
- Interpreted Language
What is difference between compiler and transpiler?
compile : ํ ์ธ์ด๋ก ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ก ๋ณํํ๋ ๊ฒ์ ์๋ฏธ
Java->bytecodec->assembly
transpile : ํฌ๋์คํ์ผ์ ๊ฒฝ์ฐ ํ ์ธ์ด๋ก ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ๋น์ทํ ์์ค์ ์ถ์ํ๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ์ธ์ด๋ก ๋ณํ ํ๋๊ฒ์ ๋งํจ
es6->es5c++->ccoffescript->javascript
transpile์ source to source compiler ๋ผ๊ณ ๋ ์ค๋ช ํ๊ธฐ๋ ํ๋ฉฐ compiler์ ์ผ์ข ์ผ๋ก transpiler๋ฅผ ์ค๋ช ํ๊ณ ์์ด compile์ด๋ผ๋ ์ฉ์ด๊ฐ ๋ ํฐ ๋ฒ์ฃผ์ ์ํ๊ฒ ๋๊ณ , ๊ทธ ์์ transpile์ด๋ผ๋ ๊ฐ๋ ์ด ์์
- ์ ์ ํ์ - ์ฝ๋ฉ ๋จ๊ณ์์ ์ปดํ์ผ ์ค๋ฅ ๋ฐ๊ฒฌ ๊ฐ๋ฅ
- ๋๊ตฌ์ ์ง์ - IDE์ ๊ฐ์ ๋๊ตฌ์ ํ์ ์ ๋ณด๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ๋์ ์์ค์ ์ฝ๋ ์ด์์คํธ, ํ์ ์ฒดํฌ, ๋ฆฌํฉํ ๋ง ๋ฑ์ ์ง์๋ฐ์ ์ ์์ผ๋ฉฐ ์ด๋ฌํ ๋๊ตฌ์ ์ง์์ ๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ์ํ ํ์ ์์์ด๋ค.
- ๊ฐ๋ ฅํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ง์ - Java, C# ๋ฑ์ ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด์ ์ต์ํ ๊ฐ๋ฐ์๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ๋ฅผ ์ํํ๋๋ฐ ์ง์ ์ฅ๋ฒฝ์ ๋ฎ์ถ๋ ํจ๊ณผ๊ฐ ์๋ค.
- ES6 / ES NEXT ์ง์ - ํ์ฌ ES6๋ฅผ ์์ ํ ์ง์ํ์ง ์๊ณ ์๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ณ ๋ คํ์ฌ Babel ๋ฑ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ํ ์ํฉ์์ TypeScript๊ฐ ์๋ก์ด ์คํ์ ์ ์ฉํ ๊ธฐ๋ฅ์ ์์ ํ๊ฒ ๋์ ํ๋๋ฐ ์ ๋ฆฌํ๋ค.
