1. The Basics
Last updated
Last updated
์๋ฐ์คํฌ๋ฆฝํธ : dynamic typing
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฐํ์์ ๋ฐ์ํ๋ ์๋ฌ์ ๋ํด์ ๋ฏธ๋ฆฌ ์์ง ๋ชปํ๋ค.
ํ์ ์คํฌ๋ฆฝํธ : static type-checking (์ ์ ํ์ ์ฒดํฌ)
ํ์ ์คํฌ๋ฆฝํธ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ ์ ํ์ ์ด ์ฌ๋ฐ๋ฅธ์ง๋ฅผ ํ์ธํด์ค๋ค.
์ ์ ํ์ ์์คํ ์ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋, value์ ๋ชจ์๊ณผ ํ๋์ด ์ด๋ ํ์ง๋ฅผ ์ค๋ช ํด์ค๋ค.
ํ์ ์คํฌ๋ฆฝํธ๋ ํด๋น ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ, ์ด ํ๋ก๊ทธ๋จ ์คํ ๊ฒฐ๊ณผ ์ด๋ค ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง๋ฅผ ๋งํด์ค ์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฐํ์ ์๋ฌ๋ฅผ ๋์ง ์ ์๋ค.
์๋ฅผ ๋ค์ด, callableํ์ง ์๋ string์ ํธ์ถํ ๊ฒฝ์ฐ์ ์๋ฌ๋ฅผ ๋์ง๋ค.
๋ฐํ์์๋ ์๋ฌ๋ฅผ ๋์ง์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์๋ฅผ ๋ค์ด ๊ฐ์ฒด์์ ์กด์ฌํ์ง ์๋ ํ๋กํผํฐ์ ์ ๊ทผํ๋ฉด ์๋ฌ๋ฅผ ๋์ง์ง ์๊ณ undefined๋ฅผ ๋ฐํํ๋ค.
ํ์ ์คํฌ๋ฆฝํธ
์ ์ ํ์ ์์คํ ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ validํ๊ธฐ์ ๋ฐ๋ก ์๋ฌ๋ฅผ ๋์ง์ง ์๋ ์ฝ๋์ ๋ํด์๋, ์๋ฌ๋ผ๊ณ ๋งํด์ค๋ค.
์คํ, ํธ์ถ๋์ง ์๋ ํจ์, ๋จ์ํ ๋ก์ง ์๋ฌ์์๋ ์๋ฌ๋ฅผ ๋์ง๋ค.
ํ์ ์คํฌ๋ฆฝํธ๋ ์ค์๋ฅผ ์ฒ์ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ถํฐ ๋ฐฉ์งํ ์ ์๊ฒ ๋์์ค๋ค.
ํ์ ์คํฌ๋ฆฝํธ๋ ํ๋กํผํฐ๋ฅผ ์ ์ํด์ค ์ ์๋ค.
์ฝ๋๋ฅผ ์์ฑํ๋ ์ค์๋ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ฑฐ๋, ์ฝ๋ ์๋์์ฑ์ ํด์ค ์ ์๋ค.
ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ํ๋ ์๋ํฐ์์๋ ์๋์ผ๋ก ์๋ฌ๋ฅผ ๊ณ ์ณ์ฃผ๊ฑฐ๋, ๋ฆฌํฉํ ๋งํด์ฃผ๊ฑฐ๋, ๋ณ์์ ์ ์๋ก ์ด๋ํ๊ฒ ํด์ฃผ๊ฑฐ๋, ๋ณ์์ ๋ชจ๋ reference๋ฅผ ์ฐพ๊ฒํด์ฃผ๋ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
tsc
, ํ์
์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌtsc๋ ํ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ก ์ปดํ์ผ์ํจ๋ค.
tsc๋ ์ปดํ์ผ ๊ณผ์ ์์ ์๋ฌ๋ฅผ ์ปค๋งจ๋๋ผ์ธ์ผ๋ก ๋ณด์ฌ์ค๋ค.
๋ช ์์ ์ธ ํ์
ํ์ ์ ๋ช ์์ ์ผ๋ก ์์ฑํ ์ ์๋ค.
ํ์ ์ถ๋ก
๋ช ์์ ์ธ ํ์ ์ด ์๋ค๋ฉด, ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ์ ์ถ๋ก ํ๋ค.
ํ์ ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ์ ํ์ ์ ์ถ๋ก ํ๊ฒ ๋๋ค๋ฉด, ํ์ ์ ๋ช ์ํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
hello.ts
hello.js
hello.ts๋ฅผ ์ปดํ์ผํ ๊ฒฐ๊ณผ ts์ js ํ์ผ์ ๋ ๊ฐ์ง ์ฐจ์ด์ ์๊ธด๋ค. 1. person๊ณผ date ํ๋ผ๋ฏธํฐ์ ํ์
ํ์๊ฐ ์ฌ๋ผ์ก๋ค. 2. template string์ด +
๋ก ๋ง๋ถ์ฌ์ง plain string์ผ๋ก ๋ณํ๋์๋ค.
1๋ฒ ์ฒ๋ผ ํ์ ํ์๊ฐ ์ฌ๋ผ์ง ์ด์ ๋ ๋ธ๋ผ์ฐ์ ๋ ๋ฐํ์์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์, ํ์ ์คํฌ๋ฆฝํธ๋ ์ปดํ์ผ๋ฌ๊ฐ ๋จผ์ ์คํ์ด ๋์ด์, Typescript-specific ์ฝ๋๋ฅผ ์์ ๊ฑฐ๋ ๋ณํ์์ผ์ผ ํ๋ค.
์์ ์์์์ 2๋ฒ๊ณผ ๊ฐ์ด ์ปดํ์ผ๋ฌ๊ฐ template string์ +
๋ก ์คํธ๋ง๋ค์ด ๋ง๋ถ์ฌ์ง ํํ๋ก ๋ณํํ ์ด์ ๋ ๋ฌด์์ผ๊น?
Downleveling
template string์ ECMAScript 2015 (ES6)์ ๋ฌธ๋ฒ์ด๋ค. ํ์
์คํฌ๋ฆฝํธ๋ ECMAScript์ ๋์ ๋ฒ์ ์์ ํ์ ๋ฒ์ ์ผ๋ก ์ฝ๋๋ฅผ ์ฌ์์ฑ์ํฌ ์ ์๋ค. ์ด๋ฅผ downleveling
์ด๋ผ๊ณ ํ๋ค.
๋ํดํธ๋ก ํ์ ์คํฌ๋ฆฝํธ์ target์ ES3์ด๋ค. ๋ง์ฝ ํ๊ฒ์ ES6๋ก ๋ณ๊ฒฝ์ํจ๋ค๋ฉด, template string์ ๋ณํ๋์ง ์๊ฒ ๋๋ค.
es6๋ฅผ ํ๊ฒ์ผ๋ก ์ปดํ์ผํ๋ ์ปค๋งจ๋
hello.js