title | layout | permalink | oneline |
---|---|---|---|
The TypeScript Handbook |
docs |
/docs/handbook/intro.html |
Your first step to learn TypeScript |
JavaScript๋ ํ๋ก๊ทธ๋๋ฐ ์ปค๋ฎค๋ํฐ์ ๋์ ๋ ์ง 20๋ ์ด ์ง๋ ์ง๊ธ, ๊ฐ์ฅ ๋๋ฆฌ ํผ์ง cross-platform ์ธ์ด ์ค ํ๋์ ๋๋ค. JavaScript๋ ์น ํ์ด์ง์ ์ฌ์ํ ์ํธ์์ฉ์ ์ถ๊ฐํ๊ธฐ ์ํ ์์ ์คํฌ๋ฆฝํ ์ธ์ด๋ก ์์ํ์ฌ, ๊ท๋ชจ์ ์๊ด์์ด ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ํ ๊ฐ๋ฅํ ์ธ์ด๋ก ์ฑ์ฅํ์ต๋๋ค. JavaScript๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ, ๋ฒ์ ๋ฐ ๋ณต์ก์ฑ์ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ปค์ก์ง๋ง, ๋ค๋ฅธ ์ฝ๋ ๋จ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ๋ JavaScript ์ธ์ด์ ๋ฅ๋ ฅ์ ๊ทธ๋ ์ง ๋ชปํ์ต๋๋ค. JavaScript์ ๋ค์ ํน์ดํ ๋ฐํ์ ์๋ฏธ ์ฒด๊ณ(runtime semantics)์ ๋๋ถ์ด, ์ธ์ด์ ํ๋ก๊ทธ๋จ ๋ณต์ก์ฑ ๊ฐ์ ๋ถ์ผ์น๋ JavaScript ๊ฐ๋ฐ์ ๊ท๋ชจ์ ๋ง๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์์ ์ผ๋ก ๋ง๋ค์์ต๋๋ค.
ํ๋ก๊ทธ๋๋จธ๋ค์ด ์์ฑํ๋ ๊ฐ์ฅ ํํ ์ค๋ฅ๋ ํ์ ์ค๋ฅ์ ๋๋ค: ๋ค๋ฅธ ์ข ๋ฅ์ ๊ฐ์ด ์์๋๋ ๊ณณ์ ํน์ ํ ๊ฐ์ด ์ฌ์ฉ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๋ ๋จ์ํ ์คํ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ API๋ฅผ ์ดํดํ์ง ๋ชปํ ๊ฒ, ๋ฐํ์ ๋์์ ๋ํ ์๋ชป๋ ๊ฐ์ ๋๋ ๋ค๋ฅธ ์ค๋ฅ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. TypeScript์ ๋ชฉํ๋ JavaScript ํ๋ก๊ทธ๋จ์ ์ ์ ํ์ ๊ฒ์ฌ์ ์ ๋๋ค. ์ฆ, ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์ ์คํํ๊ณ (์ ์ ), ํ๋ก๊ทธ๋จ ํ์ ์ด ์ ํํ์ง ํ์ธํ๋ ๋๊ตฌ(ํ์ ๊ฒ์ฌ)์ ๋๋ค.
JavaScript์ ๋ํ ๋ฐฐ๊ฒฝ์ง์ ์์ด TypeScript๋ฅผ ์ฒซ ๋ฒ์งธ ์ธ์ด๋ก ์ฌ์ฉํ๋ค๋ฉด, ๋จผ์ Mozilla ์น ๋ฌธ์์์ JavaScript์ ๋ํ ๋ฌธ์๋ฅผ ์ฝ์ด ๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ค๋ฅธ ์ธ์ด์ ๋ํ ๊ฒฝํ์ด ์๋ค๋ฉด, ํธ๋๋ถ์ ์ฝ์ผ๋ฉด์ JavaScript ๊ตฌ๋ฌธ์ ๊ฝค ๋น ๋ฅด๊ฒ ์ตํ ์ ์์ ๊ฒ์ ๋๋ค.
ํธ๋๋ถ์ ๋ ์์ญ์ผ๋ก ๋๋ฉ๋๋ค:
-
ํธ๋๋ถ
TypeScript ํธ๋๋ถ์ ํ๋ฒํ ํ๋ก๊ทธ๋๋จธ๋ค์๊ฒ TypeScript๋ฅผ ์ค๋ช ํ๋ ์ข ํฉ์ ์ธ ๋ฌธ์์ ๋๋ค. ์ผ์ชฝ ๋ฉ๋ด๋ฅผ ํตํด ์์์ ์๋๋ก ์ด๋ํ๋ฉฐ ์ฝ์ ์ ์์ต๋๋ค.
๊ฐ ์ฅ ๋๋ ํ์ด์ง๊ฐ ์ฃผ์ด์ง ๊ฐ๋ ์ ๋ํด ์์ธํ ์ค๋ช ์ ์ ๊ณตํ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํ ๊ฒ์ ๋๋ค. TypeScript ํธ๋๋ถ์ ์ธ์ด์ ๋ํ ์์ ํ ์ค๋ช ์๋ ์๋์ง๋ง, ๋ชจ๋ ํน์ง๊ณผ ๋์์ ๋ํ ์ข ํฉ์ ์ธ ๊ฐ์ด๋์ ๋๋ค.
์ค์ต์ ์๋ฃํ ๋ ์๋ ๋ค์์ ์ํํ ์ ์์ด์ผ ํฉ๋๋ค:
- ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ TypeScript ๊ตฌ๋ฌธ ๋ฐ ํจํด์ ์ฝ๊ณ ์ดํดํ๊ธฐ
- ์ค์ํ ์ปดํ์ผ๋ฌ ์ต์ ์ ํจ๊ณผ ์ค๋ช ํ๊ธฐ
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์์ ํ์ ์์คํ ๋์์ ์ฌ๋ฐ๋ฅด๊ฒ ์์ธกํ๊ธฐ
- ๊ฐ๋จํ ํจ์, ๊ฐ์ฒด ๋๋ ํด๋์ค์ ๋ํ .d.ts ์ ์ธ ์์ฑํ๊ธฐ
ํธ๋๋ถ์ ์ฃผ์ ๋ด์ฉ์ ๋ช ํ์ฑ๊ณผ ๊ฐ๊ฒฐ์ฑ์ ์ํด, ๋ค๋ฃจ์ด์ง๊ณ ์๋ ํน์ง์ ๋ชจ๋ ์ฃ์ง ์ผ์ด์ค ๋๋ ์ธ๋ถ ์ฌํญ์ ํ๊ตฌํ์ง๋ ์์ต๋๋ค. ์ฐธ๊ณ ๋ฌธํ์์ ํน์ ๊ฐ๋ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฐพ์๋ณผ ์ ์์ต๋๋ค.
-
ํธ๋๋ถ ๋ ํผ๋ฐ์ค
ํธ๋๋ถ ๋ ํผ๋ฐ์ค๋ TypeScript์ ํน์ ๋ถ๋ถ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ๋ถํ ์ดํด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์์ฑ๋์์ต๋๋ค. ์์์ ์๋๋ก ์ฝ์ ์ ์์ง๋ง, ์ฐ์์ ์ผ๋ก ์ค๋ช ํ๋ ๊ฒ์ด ์๋๋ผ, ๊ฐ ์น์ ์ ๋จ์ผ ๊ฐ๋ ์ ๋ํ ๋ ๊น์ ์ค๋ช ์ ๊ณต์ ๋ชฉํ๋ก ํฉ๋๋ค.
ํธ๋๋ถ์ย ๋ชย ์๊ฐย ์์ย ํธํ๊ฒย ์ฝ์ย ์ย ์๋ย ๊ฐ๊ฒฐํย ๋ฌธ์๋กย ์ ์๋์์ต๋๋ค.ย ๊ฐ๊ฒฐํจ์ย ์ ์งํ๊ธฐย ์ํดย ํน์ ย ์ฃผ์ ๋ย ๋ค๋ฃจ์งย ์์ต๋๋ค.
ํนํ, ํจ์, ํด๋์ค, ํด๋ก์ ์ ๊ฐ์ JavaScript ํต์ฌ ๊ฐ๋ ์ ์ ๋ถ ์๊ฐํ์ง๋ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ, ํด๋น ๊ฐ๋ ์ ์ฝ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฐฐ๊ฒฝ ์๋ฃ ๋งํฌ๋ฅผ ์ ์ํ ย ๊ฒ์ ๋๋ค.
๋ํ, ํธ๋๋ถ์ ์ธ์ด ๋ช ์ธ๋ฅผ ๋์ฒดํ๊ธฐ ์ํจ์ด ์๋๋๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋, ๋๋ต์ ์ด๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ค๋ช ์ ์ํด, ์์ง ์ผ์ด์ค๋ ๋์์ ํ์์ ์ธ ์ค๋ช ์ ์๋ตํ ์ ์์ต๋๋ค. ๋์ ์, TypeScript ๋์์ ์ฌ๋ฌ ์ธก๋ฉด์ ๋ณด๋ค ์ ํํ๊ณ ๊ณต์์ ์ผ๋ก ์ค๋ช ํ๋ ๋ณ๋์ ์ฐธ์กฐ ํ์ด์ง๊ฐ ์์ต๋๋ค. ๋ ํผ๋ฐ์ค ํ์ด์ง๋ TypeScript์ ์ต์ํ์ง ์์ ๋ ์๋ฅผ ์ํ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์, ์์ง ์ฝ์ง ์์ ๊ณ ๊ธ ์ฉ์ด๋ ์ฃผ์ ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ํ์ํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ TypeScript๊ฐ ๋ค๋ฅธ ๋๊ตฌ์ ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง๋ ๋ค๋ฃจ์ง ์์ต๋๋ค. webpack, rollup, parcel, react, babel, closure, lerna, rush, bazel, preact, vue, angular, svelte, jquery, yarn, npm์ผ๋ก TypeScript๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฅธ ์น์ฌ์ดํธ์์ ์ฐพ์ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ํ์ ์ ์์ํ๊ธฐ ์ ์, ๋ค์์ ์๊ฐ ํ์ด์ง ์ค ํ๋๋ฅผ ์ฝ์ด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค. TypeScript์ ๋น์ ์ด ์ ํธํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ฐ์ ์ฃผ์ ์ ์ฌ์ ๊ณผ ์ฐจ์ด์ ์ ๊ฐ์กฐํ๊ณ , ํด๋น ์ธ์ด์ ๋ํ ์ผ๋ฐ์ ์ธ ์คํด๋ฅผ ์ ๋ฆฌํ์ต๋๋ค.