๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“Œ Language/Typescript

[TS] ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ(TypeScript)๋ž€? (feat. ์จ์•ผํ•˜๋Š” ์ด์œ )

by Fomagran ๐Ÿ’ป 2022. 3. 8.
728x90
๋ฐ˜์‘ํ˜•

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ(TypeScript)๋ž€?

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์Šˆํผ์…‹์ธ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ ๊ฐœ๋ฐœ, ์œ ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์—„๊ฒฉํ•œ ๋ฌธ๋ฒ•์„ ์ง€์›ํ•œ๋‹ค. C#์˜ ๋ฆฌ๋“œ ์•„ํ‚คํ…ํŠธ์ด์ž ๋ธํŒŒ์ด, ํ„ฐ๋ณด ํŒŒ์Šค์นผ์˜ ์ฐฝ์‹œ์ž์ธ Anders Hejlsberg๊ฐ€ ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ์™€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ปค๋‹ค๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„๋œ ์–ธ์–ด์ด๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์Šˆํผ์…‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋„ ๋™์ž‘ํ•œ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์ž์‹ ์ด ์›ํ•˜๋Š” ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๋ชจ๋“  ์šด์˜ ์ฒด์ œ, ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €, ๋ชจ๋“  ํ˜ธ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜คํ”ˆ ์†Œ์Šค์ด๋‹ค. - ์œ„ํ‚ค ๋ฐฑ๊ณผ -

 

์ฆ‰, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๋‹จ์ ์„ ๋ณด์™„ํ•ด ๋งŒ๋“  ์–ธ์–ด์ด๋‹ค. (JS์˜ ํ™•์žฅ๋ฒ„์ „)

 

๋™์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์— ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ๋ถ€์—ฌํ•จ์œผ๋กœ์จ ์ปดํŒŒ์ผ ์‹œ ์—๋Ÿฌ๋ฅผ ์žก์„ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

 

๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์œผ๋ก  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์–ธ์–ด๋ผ๊ธฐ๋ณด๋‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—๋Ÿฌ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•ด์ฃผ๋Š” ์žฅ์น˜์™€ ๊ฐ™๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค.

 

์ด์œ ๋Š” ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปดํŒŒ์ผ ์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด(transcompiling)์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


์žฅ์ 

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ณธ๊ฒฉ์ ์œผ๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ผญ ์จ์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

 

1. ์—๋Ÿฌ ์˜ˆ๋ฐฉ

 

์œ„์—์„œ๋„ ๋งํ–ˆ๋‹ค์‹œํ”ผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ํƒ€์ž…์„ ๋ถ€์—ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ์— ์•Œ๋งž์ง€ ์•Š์€ ํƒ€์ž…์„ ๋„ฃ๊ฑฐ๋‚˜, ํ˜น์€ ํƒ€์ž…์„ ๋„ฃ์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ์‚ฌ์ „์— IDE์—์„œ ์˜ค๋ฅ˜๋ผ๊ณ  ๊ฒฝ๊ณ ๋ฅผ ์ค€๋‹ค.

 

 

์ด๊ฒƒ์€ ์‚ฌ์ „์— ์˜ค๋ฅ˜๋ฅผ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๊ฒƒ์€ ๋‚˜์ค‘์— ๋””๋ฒ„๊น…ํ•˜๋Š” ์‹œ๊ฐ„์„ ์ค„์—ฌ์ค˜ ์ƒ์‚ฐ์ ์ธ ์ธก๋ฉด์—์„œ ํšจ๊ณผ์ ์ด๋‹ค.

 


2. ์‹คํ–‰ ์†๋„

 

์œ„์—์„œ ๋งํ–ˆ๋‹ค์‹œํ”ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋™์  ํƒ€์ž…์˜ ์ธํ„ฐํ”„๋ฆฌํ‹ฐ ์–ธ์–ด์ด๋‹ค.

 

์ด ๋ง์€ ๋Ÿฐํƒ€์ž„(์‹คํ–‰) ์‹œ์— ํƒ€์ž…์„ ๊ฒฐ์ •ํ•ด์„œ ์ ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, ์ด๊ฒƒ์€ '์ปดํ“จํ„ฐ'์—๊ฒŒ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์ฒดํฌํ•˜๋ผ๊ณ  ์ผ์„ ๋งก๊ฒจ๋ฒ„๋ฆฐ ๊ฒƒ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ์†๋„๊ฐ€ ๋‹น์—ฐํžˆ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.

 

ํ•˜์ง€๋งŒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” '์‚ฌ๋žŒ'์ด ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ์— ์˜ค๋ฅ˜๋ฅผ ์ฒดํฌํ•˜๊ณ , ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ๊ฒฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๊ณ„๊ฐ€ ํ•  ์ผ์„ ๋œ์–ด ์‹คํ–‰ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 


 

3. ์•ˆ์ •์„ฑ & ํ˜‘์—…์šฉ์ด์„ฑ

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜์˜€์„ ๊ฒฝ์šฐ ๊ฐ™์ด ํ˜‘์—…ํ•˜๋Š” ์‚ฌ๋žŒ์ด๋‚˜ ํ˜น์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ฝ”๋“œ๋ฅผ ์ฝ์„ ๊ฒฝ์šฐ ํƒ€์ž…์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์ง์ž‘ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. (๋ฏธ๋ž˜์˜ '๋ณธ์ธ' ๋˜ํ•œ ๋งˆ์ฃผํ–ˆ์„ ๋•Œ ์•Œ์•„๋ณด๊ธฐ ํž˜๋“ค ๊ฒƒ)

 

 

์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹คํ–‰ ์ค‘์— ๋ฒ„๊ทธ๋ฅผ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ๋•Œ ๋ฏธ์ฒ˜ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•œ ์—๋Ÿฌ๊ฐ€ ์šด์˜ ์ค‘์— ๋ฐœ๊ฒฌ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ํƒ€์ž…์„ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๊ณ  ์ปดํŒŒ์ผ ์‹œ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๋‹ค ๋” ์•ˆ์ •์ ์ด๋‹ค๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

 

(๊ฐœ๋ฐœ์‚ฌ๊ฐ€ ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๋งํ•˜์ง€ ์•Š์„๊ฑฐ๋ž€ ์•ˆ์ •์ ์ธ ์ธก๋ฉด๋„ ์žˆ๋‹ค.)

 


4. ์Šˆํผ์…‹

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์Šˆํผ์…‹, ์ฆ‰ ์ž๋ฐ”ํฌ๋ฆฝํŠธ์˜ +์•ŒํŒŒ์ด๋‹ค.

 

์ฆ‰, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€๋Š” 100% ํ˜ธํ™˜์ด ๋˜๋Š”๊ฑด ๋ฌผ๋ก ์ด๋ฉฐ, ์ด ์™ธ์— ํด๋ž˜์Šค,์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์„ ์ œ๊ณตํ•œ๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‹จ์ ์€ ์ค„์—ฌ์ฃผ๊ณ  ๋Œ€์‹  ๋” ์ข‹์€ ๊ธฐ๋Šฅ๋“ค์„ ๊ฐ์‹ผ ํ˜•ํƒœ๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

 

์ถœ์ฒ˜:https://medium.com/sjk5766/typescript-%EB%9E%80-37b5b6a6f884

 


๋‹จ์ 

 

1. ์ดˆ๊ธฐ ์„ธํŒ…

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋น„ํ•ด ์ดˆ๊ธฐ ์„ธํŒ…์ด ๊นŒ๋‹ค๋กญ๊ณ , ๊ฝค ๊ท€์ฐฎ๋‹ค. 

 

(์ปดํŒŒ์ผ ์˜ต์…˜,๋ชจ๋“ˆ ์‚ฌ์šฉ ์„ค์ • ๋“ฑ)

 


2. ์ƒˆ๋กœ์šด ์–ธ์–ด

 

๋ณดํ†ต ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž์ธ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋”ฐ๋กœ ๋ฐฐ์›Œ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 


3. ๋” ๋งŽ์€ ์ฝ”๋“œ

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ๋” ๋งŽ์ด ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

์ด๊ฒƒ์€ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด ๋Š˜์–ด๋‚˜๋ฉฐ, ์ฝ”๋“œ๋ฅผ ๋” ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋…์„ฑ์ด ๋” ๋–จ์–ด์ง€๋Š” ๋ถ€์ž‘์šฉ๋„ ์žˆ๋‹ค.

 


๊ฒฐ๋ก 

 

๊ตณ์ด ๋‹จ์ ์„ ์ ๊ธด ์ ์—ˆ์ง€๋งŒ ๋‚ด ์ƒ๊ฐ์—๋Š” ๋‚˜์ค‘์— ์ƒ๊ธธ ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด(์ƒ์‚ฐ์„ฑ)์—์„œ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์›”๋“ฑํ•˜๊ฒŒ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

๋˜ํ•œ ๊ตณ์ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฐœ๋ฐœํ•  ์ด์œ ๋Š” ๋”ฑํžˆ ์—†๋Š” ๋ฐ˜๋ฉด์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ด์œ ๋Š” ๋ฌด์ˆ˜ํžˆ ๋งŽ๋‹ค.

 

๊ณ ๋กœ,  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์“ฐ์ž!

728x90
๋ฐ˜์‘ํ˜•

'๐Ÿ“Œ Language > Typescript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TS] Extends์™€ Implements ์ฐจ์ด (Difference between extends and implements)  (0) 2022.04.02

๋Œ“๊ธ€