1.1 ํ์
์คํฌ๋ฆฝํธ, ๋ค๊ฐ ๊ถ๊ธํด!1.2 ํ์
์คํฌ๋ฆฝํธ๊ฐ ์ ํ์ํ ๊น?1.2.1 ์๋ฌ, ๋ด๊ฐ ๋ฏธ๋ฆฌ ๋ง์๊ฒ1.2.2 ๋ด๊ฐ ๋์์ค๊ฒ - ์๋์์ฑ, ๊ฐ์ด๋ ์ญํ
1.1 ํ์ ์คํฌ๋ฆฝํธ, ๋ค๊ฐ ๊ถ๊ธํด!
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ๋๊ตฌ๋ ํ๋ฒ์ฏค ํ์
์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ณธ ์ ์ด ์์ ๊ฒ์ด๋ค. ํ์
์คํฌ๋ฆฝํธ๋ ๋ฌด์์ผ๊น?
ย
"Typescript is a typed superset of Javascript that compiles to plain Javascript" ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ ๋๋, ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ์ด ์๋ ์์์งํฉ์ด๋ค. -๊ณต์ ๋ฌธ์-
ย
ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ํผ์ ์ธ ์คํ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฌ์ฉํ๋ฉด์ ์ปค๋ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๊ฒ ์ค๊ณ๋ ์ธ์ด์ด๋ค.ย์๋ฐ์คํฌ๋ฆฝํธ์ ์ํผ์ ์ด๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ด ํ์ ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ผ๋ก๋ ๋์ํ๋ค. ํ์ ์คํฌ๋ฆฝํธ์์ ์์ ์ด ์ํ๋ ํ์ ์ ์ ์ํ๊ณ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ๋์ด ์คํํ ์ ์๋ค.ยํ์ ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ์ด์ ์ฒด์ , ๋ชจ๋ ๋ธ๋ผ์ฐ์ , ๋ชจ๋ ํธ์คํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์คํ ์์ค์ด๋ค.-์ํค๋ฐฑ๊ณผ-
ย
๊ณต์๋ฌธ์์ ์ํค๋ฐฑ๊ณผ์์ ์ฃผ๋ชฉํด์ผ ํ ๋จ์ด๋ ํ์
์ด ์๋(typed) ๊ณผ ์์์งํฉ(superset)์ด๋ค.
ํ์
์คํฌ๋ฆฝํธ๋ ํ์
์ด ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ด๋ค. ์ข ๋ ์ ํํ๊ฒ ๋งํ์๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ์
๋ฌธ๋ฒ์ ์ถ๊ฐํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค.
ํ์
์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฌ๋ฆฌ ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ค๋ฉด ํ์ผ์ ํ๋ฒ ๋ณํํด์ค์ผ ํ๋ค. ์ด ๋ณํ ๊ณผ์ ์ ์ปดํ์ผ(complile)ย ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ฌ๊ธฐ์ ์ด๋ฌํ ์๋ฌธ์ด ๋ค ๊ฒ์ด๋ค.
ย
๊ทธ๋ผ ๊ตณ์ด ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฐ๋ ๊ฑฐ์ผ?
ย
์ง๊ธ๋ถํฐ ํ์
์คํฌ๋ฆฝํธ๊ฐ ์ ํ์ํ์ง ์์๋ณด์.
ย
ย
1.2 ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ ํ์ํ ๊น?
1.2.1 ์๋ฌ, ๋ด๊ฐ ๋ฏธ๋ฆฌ ๋ง์๊ฒ
ํ์
์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ค๋ฅด๊ฒ ์๋ฌ๋ฅผ ์ฌ์ ์ ๋ฏธ๋ฆฌ ์๋ฐฉํ ์ ์๋ค. ์ด๋ ์ ์ง๋ณด์ ๋น์ฉ์ ํฌ๊ฒ ์ค์ฌ์ค๋ค. ๋ํ ์ฝ๋๋ฅผ ๋ค ์์ฑํ๊ณ ๋ฐฐํฌํ๋ ค๋ ํ์ด๋ฐ์ ์ค๋ฅ๊ฐ ์๊ธด๋ค๋ฉด ์ผ์ ์ ์ฐจ์ง์ด ์๊ธธ ์ ์๊ณ , ์ต์
์ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ๋ชจ๋ ๋ค์ ์์ฑํด์ผ ํ๋ ์ผ์ด ์๊ธธ ์๋ ์๋ค. ํ์
์คํฌ๋ฆฝํธ๋ ์ด๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํด์ ์ฐ๋ฆฌ๊ฐ ์ข ๋ ํธํ๊ฒ ์ฝ๋ฉ์ ํ ์ ์๋๋ก ๋์์ค๋ค.
ย
์๋ 2๊ฐ์ง ์ฝ๋๋ฅผ ํตํด ์ด๋ป๊ฒ ์๋ฌ๋ฅผ ์๋ฐฉํ๋์ง ๊ฐ์ด ์ดํด๋ณด์.
// math.js function sum(a, b) { return a + b; }
// math.ts function sum(a: number, b: number) { return a + b; }
ํ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ, ํ๋๋ ํ์
์คํฌ๋ฆฝํธ๋ก ์์ฑํ ์ฝ๋์ด๋ฉฐ, ๋ ์ฝ๋ ๋ชจ๋ ์ซ์์ ํฉ์ ๊ตฌํ๋ ํจ์ ์ฝ๋์ด๋ค. ์ด ํจ์๋ฅผ ๊ฐ์ง๊ณ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ฒ ๋ค.
ย
sum(20, 30); // 50
์ด๋ ๊ฒย
sum
ย ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ซ์ 20 ๊ณผ 30 ์ ๋ํ๋ค. ๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒฐ๊ณผ์ธ 50 ์ ์ป์ ์ ์๋ค. ย
sum('20', '30'); // 2030
๊ทธ๋ฐ๋ฐ, ์ด๋ ๊ฒ ์์ฑ์ ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น? ์ฌ๋ฌ๋ถ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ์ต์ํ๋ค๋ฉด ์ ์ฝ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ์ ๊ฒ์ด๋ค. ์ซ์๊ฐ ์๋ ๋ฌธ์์ด์ ๋ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ 50 ์ด ์๋ 2030 ์ด๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
ย
// math.ts function sum(a: number, b: number) { return a + b; } sum('20', '30'); // Error: '20'์ number์ ํ ๋น๋ ์ ์์ต๋๋ค.
์ด๋ฅผ ํ์
์คํฌ๋ฆฝํธ๋ก ์์ฑํ๊ณ VSCode ๋ก ํ์ธํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค. ํ์
์คํฌ๋ฆฝํธ๋ ์ด์ฒ๋ผ ์๊ธฐ์น ๋ชปํ ์ํฉ์ ์ฌ์ ์ ๋ฏธ๋ฆฌ ์ฐจ๋จํ ์ ์๋ค.
ย
ย
1.2.2 ๋ด๊ฐ ๋์์ค๊ฒ - ์๋์์ฑ, ๊ฐ์ด๋ ์ญํ
ํ์
์คํฌ๋ฆฝํธ๋ ๊ฐ๋ฐ ํด์ ๊ธฐ๋ฅ์ ์ต๋๋ก ํ์ฉํ ์ ์๋ค. ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๊ณ , ์ฐ๋ฆฌ ์ฑ
์์๋ ์ธ VScode ๋ ํด์ ๋ด๋ถ๊ฐ ํ์
์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ผ์๊ธฐ ๋๋ฌธ์ ํ์
์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์ ์ต์ ํ ๋์ด ์๋ค. ์ข ๋ ํ์คํ๊ฒ ์๊ณ ๋์ด๊ฐ๊ธฐ ์ํด ์ฝ๋๋ฅผ ํตํด ์์๋ณด์.
ย
// math.js function sum(a, b) { return a + b; } var result = sum(20, 30); result.toLocaleString();
* toLocaleString() : ์ซ์๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ํ๋ ์ง์ญํ ๋ฌธ์๋ก ๋ณํํด์ฃผ๋ ๋ฉ์๋
ย
์ ์ฝ๋๋ ์์์ ์ดํด๋ดค๋
sum()
ํจ์๋ฅผ ์ด์ฉํด ๋ ์ซ์์ ํฉ์ ๊ตฌํ ๋ค์, *toLocaleString()
๋ฅผ ์ ์ฉํ ์ฝ๋์ด๋ค. ์ฌ๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ result
์ด๋ผ๋ ๋ณ์๋ฅผ ํ์ฑํ ๋ ํ์
์ด number
๋ผ๋ ๊ฒ์ ์ ์ ์๋ค. ย
์ฝ๊ฒ ๋งํด์, ๊ฐ๋ฐ์๊ฐ ์์์
sum()
ํจ์์ ๊ฒฐ๊ณผ๊ฐ number
ํ์
์ ๊ฐ์ง๋ค๋ ๊ฒ์ ๋ฏธ๋ฆฌ ํ์
์ ํ ์ํ์์number
์ ๋ฉ์๋์ธ toLocaleString()
๋ฅผ ์ผ์ผ์ด ๋ค ์์ฑํด์ผํ๋ค. ๋ง์ฝ์ ์คํ๊ฐ ๋์ toLocaleStirng() ์ด๋ผ๊ณ ์์ฑํ๋ค ํ๋๋ผ๋, ์ด ํ์ผ์ ๋ธ๋ผ์ฐ์ ์์ ์คํ์ ํด์ผ๋ง ์ค๋ฅ๋ฅผ ํ์ธํ ์ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ผ, ํ์
์คํฌ๋ฆฝํธ๋ก ์์ฑํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?ย
// math.ts function sum(a: number, b: number): number { return a + b; } var result = sum(20, 30); result.toLocaleString();
๋ณ์ย
result
์ ๋ํ ํ์
์ด ์ง์ ๋์ด ์๊ธฐ ๋๋ฌธ์ tol ๋ง ์ณ๋ VSCode์์ toLocaleString()
์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ก ๋์์ค๋ค. ์ด์ฒ๋ผ, ๋งค๋ฒ ๋ค ์ผ์ผ์ด ์น๋ ๊ฒ์ด ์๋๋ผ ์๋์์ฑ์ ํตํด ์์ฑํด๋๊ฐ ์ ์๋๋ก ์น์ ํ๊ฒ ๊ฐ์ด๋ ์ญํ ์ ํด์ค๋ค.ย
์ง๊ธ๊น์ง ํ์
์คํฌ๋ฆฝํธ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์์๋ณด์๋ค.
์ด์ ํ์
์คํฌ๋ฆฝํธ ๊ฐ๋ฐ ํ๊ฒฝ์ ํจ๊ป ๊ตฌ์ถํด๋ณด๋๋ก ํ์.
ย