2. TypeScript

ํ‚ค์›Œ๋“œ

  • REPL

  • TypeScript

    • ํƒ€์ž… ์ถ”๋ก 

    • Interface vs Type

    • Union Type vs Intersection Type

    • Optional Parameter

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ, ์™œ ์“ฐ๋Š”๊ฐ€?

  • ํŽธ๋ฆฌํ•œ ์ž๋™์™„์„ฑ

  • ์‹ค์‹œ๊ฐ„ ์˜ค๋ฅ˜๊ฒ€์‚ฌ

REPL

  • Read-Eval-Print-Loop

  • ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„ ํ‰๊ฐ€ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ

  • ts-node๋ฅผ ์‹คํ–‰ํ•ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ REPL ์‚ฌ์šฉ ๊ฐ€๋Šฅ npx ts-node

ํƒ€์ž… ์ถ”๋ก 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฃŒ์˜ ๋’ค์— ํƒ€์ž…์„ ๋ช…์‹œ

ํƒ€์ž…์„ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ ๊ฐ’์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ํƒ€์ž…์„ ๊ฒฐ์ •ํ•ด์ฃผ๊ธฐ๋„ ํ•จ

ํƒ€์ž…

์›์‹œํƒ€์ž…

๋ฐฐ์—ด

number[] ๋˜๋Š” Array<number> ์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ

ํŠœํ”Œ

๊ธธ์ด์™€ ํƒ€์ž…์ด ๊ณ ์ •๋œ ๋ฐฐ์—ด

์ˆœ์„œ์— ๋งž์ง€ ์•Š๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ฉด ์—๋Ÿฌ ํ‘œ์‹œ

ํ•œ๊ณ„์ 

push ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •์˜์™€ ์ƒ๊ด€์—†์ด ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ๋Š˜์–ด๋‚จ

ํ•ด๊ฒฐ๋ฐฉ์•ˆ

ํŠœํ”Œ ์„ ์–ธ์‹œ์— readonly ์‚ฌ์šฉ

any

์–ด๋–ค ๊ฐ’์˜ ํƒ€์ž…์ด any์ด๋ฉด ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ

ํ•จ์ˆ˜

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฆฌํ„ด๊ฐ’์— ํƒ€์ž…์„ ํ‘œ๊ธฐํ•  ์ˆ˜ ์žˆ์Œ

๋ฌธ๋งฅ์„ ํ†ตํ•ด ์ต๋ช… ํ•จ์ˆ˜์˜ ํƒ€์ž…์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์ž๋™์œผ๋กœ ํƒ€์ž…์ด ๋ถ€์—ฌ๋จ

๊ฐ์ฒด

Optional parameter

๊ฐ์ฒด์˜ ์†์„ฑ์„ ์˜ต์…˜ํ™”ํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์˜ต์…˜ํ™”ํ•  ์ˆ˜ ์žˆ์Œ

Union vs. Intersection

๊ธฐ์กด์˜ ํƒ€์ž…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

Union Type

์ˆซ์ž ๋˜๋Š” ๋ฌธ์ž๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜

์œ ๋‹ˆ์–ธ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ•ด๋‹น ์œ ๋‹ˆ์–ธ ํƒ€์ž…์˜ ๋ชจ๋“  ๋ฉค๋ฒ„์— ๋Œ€ํ•ด ์œ ํšจํ•œ ์ž‘์—…๋งŒ ํ—ˆ์šฉ๋จ

string | number ์œ ๋‹ˆ์–ธ ํƒ€์ž…์˜ ๊ฒฝ์šฐ, string ํƒ€์ž…์—๋งŒ ์œ ํšจํ•œ ๋ฉ”์„œ๋“œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

typeof๋ฅผ ์ด์šฉํ•ด ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ

Intersection Type

์—ฌ๋Ÿฌ ํƒ€์ž…์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ํ•˜๋‚˜์˜ ํƒ€์ž…

Capt ํƒ€์ž…์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋จ

Type vs. Interface

type

๋˜‘๊ฐ™์€ ํƒ€์ž…์„ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฐ์ฒด, ์œ ๋‹ˆ์–ธ ํƒ€์ž… ๋“ฑ์„ ๋” ๊ฐ„๋‹จํ•œ ์ด๋ฆ„์œผ๋กœ ๋ถ€๋ฅด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ํƒ€์ž…์˜ ๋ณ„์นญ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

interface

type๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ์ฒด ํƒ€์ž…์„ ๋งŒ๋“œ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•

type๊ณผ interface์˜ ์ฐจ์ด์ 

์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด์—๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ, ์›์‹œํƒ€์ž…์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

์ธํ„ฐํŽ˜์ด์Šค๋Š” extends๋ฅผ ํ†ตํ•ด ํ™•์žฅ, ํƒ€์ž…์€ ๊ต์ง‘ํ•ฉ์„ ํ†ตํ•ด ํ™•์žฅ

์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ƒˆ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํƒ€์ž…์€ ์ƒ์„ฑํ•œ ๋’ค ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์—†์Œ

Last updated