๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

javascript

TypeScript ๊ฐœ๋…

728x90

TypeScript

: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜, ์ •์  ํƒ€์ž… ๋ฌธ๋ฒ•์„ ์ถ”๊ฐ€ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

 

ํŠน์ง•

1. ์ปดํŒŒ์ผ ์–ธ์–ด, ์ •์  ํƒ€์ž… ์–ธ์–ด

โ†• js๋Š” ๋™์  ํƒ€์ž…์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด → ๋Ÿฐํƒ€์ž„์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌ

ts ์ปดํŒŒ์ผ๋Ÿฌ ๋˜๋Š” ๋ฐ”๋ฒจ(Babel)๋ฅผ ํ†ตํ•ด js๋กœ ๋ณ€ํ™˜๋จ

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

but,  ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ ๋งค๋ฒˆ ํƒ€์ž…์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ด ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์ฝ”๋“œ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๋ฉฐ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ.  

 

*๋ฐ”๋ฒจ(Babel) : ํ˜ธํ™˜

: ECMAScript 2015+ ์ฝ”๋“œ๋ฅผ ์ด์ „ JavaScript ์—”์ง„์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” JavaScript ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” JavaScript ํŠธ๋žœ์Šค์ปดํŒŒ์ผ๋Ÿฌ

= ์ด์ „ ๋ธŒ๋ผ์šฐ์ €(์‹คํ–‰ ํ™˜๊ฒฝ)์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ํ•ญ์ƒ ์ตœ์‹  ๋ฌธ๋ฒ•์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ

- ๋ฐ”๋ฒจ์€ js์˜ ์ตœ์‹  ๋ฌธ๋ฒ• ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ TypeScript๋‚˜ JSX๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋ณ€ํ™˜ํ•  ๋•Œ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

- React์˜ ๊ฒฝ์šฐ, JSX ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด ์ฝ”๋”ฉ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์›๋ณธ ์ฝ”๋“œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

๋”ฐ๋ผ์„œ Webpack ๋ฒˆ๋“ค๋Ÿฌ์™€ Babel ๋กœ๋”๋ฅผ ์ด์šฉํ•ด React ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•œ๋‹ค.

*ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ : ๋‹ค๋ฅธ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ๋„ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๊ฐ™์€ ์–ธ์–ด๋ฅผ ์œ ์ง€ํ•œ์ฒด ์†Œ์Šค ์ฝ”๋“œ์˜ ํ˜•ํƒœ๋งŒ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์„ ์˜๋ฏธ

 

2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์Šˆํผ์…‹(Superset)

: JS ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์— TS ๋ฌธ๋ฒ•์„ ์ถ”๊ฐ€ํ•œ ์–ธ์–ด

์œ ํšจํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ํ™•์žฅ์ž๋ฅผ .js์—์„œ .ts๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ปดํŒŒ์ผํ•ด ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์›

TS๋Š” ES6์—์„œ ์‚ฌ์šฉ๋œ ๋ฌธ๋ฒ•์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์ƒ์†, ๋ชจ๋“ˆ ๋“ฑ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

 

์žฅ์ 

1. ๋†’์€ ์ˆ˜์ค€์˜ ์ฝ”๋“œ ํƒ์ƒ‰๊ณผ ๋””๋ฒ„๊น…

  • ์—๋Ÿฌ์˜ ์‚ฌ์ „ ๋ฐฉ์ง€
    • ์ฝ”๋“œ์— ๋ชฉ์ ์„ ๋ช…์‹œํ•˜๊ณ  ๋ชฉ์ ์— ๋งž์ง€ ์•Š๋Š” ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋“ค์—์„œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋ฒ„๊ทธ๋ฅผ ์‚ฌ์ „์— ์ œ๊ฑฐํ•œ๋‹ค.
  • ์ฝ”๋“œ ๊ฐ€์ด๋“œ ๋ฐ ์ž๋™ ์™„์„ฑ(๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ)
    •  ์ž‘์—…๊ณผ ๋™์‹œ์— ๋””๋ฒ„๊น…์ด ๊ฐ€๋Šฅํ•˜๋‹ค

 

2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜ธํ™˜

TS๋Š” JS์™€ 100% ํ˜ธํ™˜์ด ๊ฐ€๋Šฅ  ํ”„๋ก ํŠธ, ๋ฐฑ์—”๋“œ ์–ด๋””๋“  JS๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๋ผ๋ฉด TS๋„ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

 

3. ๊ฐ•๋ ฅํ•œ ์ƒํƒœ๊ณ„

TS๋Š” ์‹ ์ƒ ์–ธ์–ด์ž„์—๋„, ๋Œ€๋ถ€๋ถ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด TS๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ๊ฐ์ข… ์—๋””ํ„ฐ๊ฐ€ TS ๊ด€๋ จ ๊ธฐ๋Šฅ๊ณผ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›ํ•œ๋‹ค.

 

4. ์ ์ง„์  ์ „ํ™˜ ๊ฐ€๋Šฅ

๊ธฐ์กด JSํ”„๋กœ์ ํŠธ๋ฅผ TS๋กœ ์ „ํ™˜ํ•˜๋Š”๋ฐ ๋ถ€๋‹ด์ด ์žˆ๋‹ค๋ฉด, ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด๋‚˜ ํŠน์ • ๊ธฐ๋Šฅ์—๋งŒ TS๋ฅผ ๋„์ž…ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค  ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ์™„์ „ํžˆ ๋ฐ”๋€Œ๋„๋ก ์ค€๋น„ ๊ธฐ๊ฐ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.


TypeScript ๋ฌธ๋ฒ•

// ๋ณ€์ˆ˜์— ํƒ€์ž… ์„ค์ •
let str: string = 'hi';
let num: number = 100;

let arr: Array = [1, 2, 3];
let arr2: number[] = [1, 2, 3];

let obj: object = {};
let obj2: { name: string, age: number} = {
 name: 'hoho',
 age: 22
};

// ํ•จ์ˆ˜์— ํƒ€์ž… ์„ค์ •
function add(a: number, b: number): number {
return a+b;
}
//์˜ต์…”๋„ ํŒŒ๋ผ๋ฏธํ„ฐ
function log(a: string, b?: string, c?: string) {
 console.log(a);
}

// ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์€ ์•„๋ž˜ ์ฐธ๊ณ  ์ฃผ์†Œ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

ํƒ€์ž… ์Šคํฌ๋ฆฝํŠธ

https://www.samsungsds.com/kr/insights/typescript.html

๋ฐ”๋ฒจ
https://bravenamme.github.io/2020/02/12/what-is-babel/
https://www.daleseo.com/js-babel/

 

 

728x90