ํ์ ์คํฌ๋ฆฝํธ(TypeScript)๋?
ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ํผ์ ์ธ ์คํ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ๋ง์ดํฌ๋ก์ํํธ์์ ๊ฐ๋ฐ, ์ ์งํ๊ณ ์์ผ๋ฉฐ ์๊ฒฉํ ๋ฌธ๋ฒ์ ์ง์ํ๋ค. C#์ ๋ฆฌ๋ ์ํคํ ํธ์ด์ ๋ธํ์ด, ํฐ๋ณด ํ์ค์นผ์ ์ฐฝ์์์ธ Anders Hejlsberg๊ฐ ๊ฐ๋ฐ์ ์ฐธ์ฌํ๋ค. ํด๋ผ์ด์ธํธ ์ฌ์ด๋์ ์๋ฒ ์ฌ์ด๋๋ฅผ ์ํ ๊ฐ๋ฐ์ ์ฌ์ฉํ ์ ์๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฌ์ฉํ๋ฉด์ ์ปค๋ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๊ฒ ์ค๊ณ๋ ์ธ์ด์ด๋ค.์๋ฐ์คํฌ๋ฆฝํธ์ ์ํผ์ ์ด๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ด ํ์ ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ผ๋ก๋ ๋์ํ๋ค. ํ์ ์คํฌ๋ฆฝํธ์์ ์์ ์ด ์ํ๋ ํ์ ์ ์ ์ํ๊ณ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ๋์ด ์คํํ ์ ์๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ์ด์ ์ฒด์ , ๋ชจ๋ ๋ธ๋ผ์ฐ์ , ๋ชจ๋ ํธ์คํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์คํ ์์ค์ด๋ค. - ์ํค ๋ฐฑ๊ณผ -
์ฆ, ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๋จ์ ์ ๋ณด์ํด ๋ง๋ ์ธ์ด์ด๋ค. (JS์ ํ์ฅ๋ฒ์ )
๋์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด์ ํ์ ์ ๋ฏธ๋ฆฌ ๋ถ์ฌํจ์ผ๋ก์จ ์ปดํ์ผ ์ ์๋ฌ๋ฅผ ์ก์ ์๊ฐ ์๋ค.
๊ฐ์ธ์ ์ธ ์๊ฐ์ผ๋ก ํ์ ์คํฌ๋ฆฝํธ๋ ์ธ์ด๋ผ๊ธฐ๋ณด๋ค ์๋ฐ์คํฌ๋ฆฝํธ์ ์๋ฌ๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํด์ฃผ๋ ์ฅ์น์ ๊ฐ๋ค๊ณ ๋๊ผ๋ค.
์ด์ ๋ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ์ธ ์ ์๋ ๊ฒ์ด ์๋๋ผ ์ปดํ์ผ ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋ค์ด(transcompiling)์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฅ์
๊ทธ๋ ๋ค๋ฉด ๋ณธ๊ฒฉ์ ์ผ๋ก ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ผญ ์จ์ผ ํ๋ ์ด์ ์ ๋ํด์ ์์๋ณด์.
1. ์๋ฌ ์๋ฐฉ
์์์๋ ๋งํ๋ค์ํผ ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ์ ๋ถ์ฌํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์์ฑ ์์ ์๋ง์ง ์์ ํ์ ์ ๋ฃ๊ฑฐ๋, ํน์ ํ์ ์ ๋ฃ์ง ์์์ ๊ฒฝ์ฐ ์ฌ์ ์ IDE์์ ์ค๋ฅ๋ผ๊ณ ๊ฒฝ๊ณ ๋ฅผ ์ค๋ค.
์ด๊ฒ์ ์ฌ์ ์ ์ค๋ฅ๋ฅผ ๋๋ฒ๊น ํ ์ ์๊ณ ์ด๊ฒ์ ๋์ค์ ๋๋ฒ๊น ํ๋ ์๊ฐ์ ์ค์ฌ์ค ์์ฐ์ ์ธ ์ธก๋ฉด์์ ํจ๊ณผ์ ์ด๋ค.
2. ์คํ ์๋
์์์ ๋งํ๋ค์ํผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์ ์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ด๋ค.
์ด ๋ง์ ๋ฐํ์(์คํ) ์์ ํ์ ์ ๊ฒฐ์ ํด์ ์ ์ฉ๋๋ค๋ ๊ฒ์ธ๋ฐ, ์ด๊ฒ์ '์ปดํจํฐ'์๊ฒ ์ค๋ฅ๊ฐ ์๋์ง ์๋์ง ์ฒดํฌํ๋ผ๊ณ ์ผ์ ๋งก๊ฒจ๋ฒ๋ฆฐ ๊ฒ๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ ์คํ ์๋๊ฐ ๋น์ฐํ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
ํ์ง๋ง ํ์ ์คํฌ๋ฆฝํธ๋ '์ฌ๋'์ด ์ฝ๋ ์์ฑ ์์ ์ค๋ฅ๋ฅผ ์ฒดํฌํ๊ณ , ํ์ ์ ๋ฏธ๋ฆฌ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๊ณ๊ฐ ํ ์ผ์ ๋์ด ์คํ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
3. ์์ ์ฑ & ํ์ ์ฉ์ด์ฑ
์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋์ ๊ฐ์ด ์์ฑํ์์ ๊ฒฝ์ฐ ๊ฐ์ด ํ์ ํ๋ ์ฌ๋์ด๋ ํน์ ๋ค๋ฅธ ์ฌ๋์ด ์ฝ๋๋ฅผ ์ฝ์ ๊ฒฝ์ฐ ํ์ ์ด ์ด๋ค ๊ฒ์ธ์ง ์ง์ํ๊ธฐ๊ฐ ์ด๋ ต๋ค. (๋ฏธ๋์ '๋ณธ์ธ' ๋ํ ๋ง์ฃผํ์ ๋ ์์๋ณด๊ธฐ ํ๋ค ๊ฒ)
์์ ๊ฐ์ ๋ฌธ์ ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์คํ ์ค์ ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ธฐ ๋๋ฌธ์ ํ ์คํธ ๋ ๋ฏธ์ฒ ๋ฐ๊ฒฌํ์ง ๋ชปํ ์๋ฌ๊ฐ ์ด์ ์ค์ ๋ฐ๊ฒฌ๋ ์๋ ์๋ค.
ํ์ง๋ง ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ์ ๋ช ์ํ ์ ์๊ณ ์ปดํ์ผ ์ ์ค๋ฅ๋ฅผ ์ฐพ๊ธฐ ๋๋ฌธ์ ๋ณด๋ค ๋ ์์ ์ ์ด๋ค๋ผ๊ณ ๋งํ ์ ์๋ค.
(๊ฐ๋ฐ์ฌ๊ฐ ๋ง์ดํฌ๋ก ์ํํธ์ด๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ๋งํ์ง ์์๊ฑฐ๋ ์์ ์ ์ธ ์ธก๋ฉด๋ ์๋ค.)
4. ์ํผ์
ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ํผ์ , ์ฆ ์๋ฐํฌ๋ฆฝํธ์ +์ํ์ด๋ค.
์ฆ, ์๋ฐ์คํฌ๋ฆฝํธ์๋ 100% ํธํ์ด ๋๋๊ฑด ๋ฌผ๋ก ์ด๋ฉฐ, ์ด ์ธ์ ํด๋์ค,์ธํฐํ์ด์ค ๋ฑ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจํด์ ์ ๊ณตํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋จ์ ์ ์ค์ฌ์ฃผ๊ณ ๋์ ๋ ์ข์ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ผ ํํ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
๋จ์
1. ์ด๊ธฐ ์ธํ
์๋ฐ์คํฌ๋ฆฝํธ์ ๋นํด ์ด๊ธฐ ์ธํ ์ด ๊น๋ค๋กญ๊ณ , ๊ฝค ๊ท์ฐฎ๋ค.
(์ปดํ์ผ ์ต์ ,๋ชจ๋ ์ฌ์ฉ ์ค์ ๋ฑ)
2. ์๋ก์ด ์ธ์ด
๋ณดํต ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์์ธ ๊ฒฝ์ฐ ์๋ก์ด ์ธ์ด๋ฅผ ๋ฐ๋ก ๋ฐฐ์ ์ ์ฉํด์ผ ํ๋ค๋ ๋จ์ ์ด ์๋ค.
3. ๋ ๋ง์ ์ฝ๋
ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค ์ฝ๋๋ฅผ ๋ ๋ง์ด ์์ฑํด์ผ ํ๋ค.
์ด๊ฒ์ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ด ๋์ด๋๋ฉฐ, ์ฝ๋๋ฅผ ๋ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ์ด ๋ ๋จ์ด์ง๋ ๋ถ์์ฉ๋ ์๋ค.
๊ฒฐ๋ก
๊ตณ์ด ๋จ์ ์ ์ ๊ธด ์ ์์ง๋ง ๋ด ์๊ฐ์๋ ๋์ค์ ์๊ธธ ์ ์ง๋ณด์ ์ธก๋ฉด(์์ฐ์ฑ)์์๋ ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์๋ฑํ๊ฒ ์ข๋ค๊ณ ์๊ฐํ๋ค.
๋ํ ๊ตณ์ด ํ์ ์คํฌ๋ฆฝํธ ๋์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ๋ฐํ ์ด์ ๋ ๋ฑํ ์๋ ๋ฐ๋ฉด์ ์๋ฐ์คํฌ๋ฆฝํธ ๋์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ์ด์ ๋ ๋ฌด์ํ ๋ง๋ค.
๊ณ ๋ก, ์๋ฐ์คํฌ๋ฆฝํธ ๋์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฐ์!
'๐ Language > Typescript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TS] Extends์ Implements ์ฐจ์ด (Difference between extends and implements) (0) | 2022.04.02 |
---|
๋๊ธ