Typescript Basics & Basic Types

TeasanΒ·2022λ…„ 9μ›” 11일
0

typescript

λͺ©λ‘ 보기
11/13
post-thumbnail

λͺ©μ°¨

  • Using "Watch Mode"
  • Compiling the Entire Project / Multiple Files
  • Including & Excluding Files
  • Setting a Compilation Target

✧ Watch Mode μ΄μš©ν•˜κΈ°

  • 변경사항이 μžˆμ„ λ•Œλ§ˆλ‹€ tsc μ»€λ§¨λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” 것은 어쩐지 λ²ˆκ±°λ‘­λ‹€. 변경사항을 μžλ™μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜κ³  컴파일 ν•΄μ£ΌλŠ” watch modeλ₯Ό μ‚¬μš©ν•˜λ©΄ 훨씬 νŽΈλ¦¬ν•˜λ‹€.
tsc app.ts --watch
tsc app.ts -w
  • κ΄€μ°°(watch) λͺ¨λ“œλ₯Ό μ„€μ •ν•˜λ©΄ 컴파일 였λ₯˜λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ λ°›μ•„λ³Ό 수 있기 λ•Œλ¬Έμ— 맀번 컴파일 였λ₯˜λ₯Ό 확인해쀄 ν•„μš”λ„ μ—†λ‹€. 이처럼 κ΄€μ°° λͺ¨λ“œλŠ” 생산성 ν–₯상을 μœ„ν•œ μš°μˆ˜ν•œ κΈ°λŠ₯을 가지고 μžˆλ‹€. λ‹€λ§Œ, κ΄€μ°° λͺ¨λ“œλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” ν•΄λ‹Ή νŒŒμΌμ„ ꡬ체적으둜 지정해야 ν•œλ‹€λŠ” 단점이 있고, μ΄λŠ” 큰 규λͺ¨μ˜ ν”„λ‘œμ νŠΈμ—λŠ” μ ν•©ν•˜μ§€ μ•Šμ„ 것이닀.

✧ 전체 ν”„λ‘œμ νŠΈ 컴파일과 λ‹€μˆ˜μ˜ 파일

  • κ΄€μ°°(watch) λͺ¨λ“œλŠ” 생산성을 λ†’μ—¬μ£Όμ§€λ§Œ, ν•˜λ‚˜μ˜ νŒŒμΌμ—λ§Œ κ΅­ν•œ λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 단점이 μžˆμ—ˆλ‹€. νƒ€μž…μŠ€ν¬λ¦½νŠΈ 파일이 λ‘κ°œ 이상이라면 μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.
tsc --init
  • tsc --init λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ νŒŒμΌμ„ μ§€μ •ν•˜μ§€ μ•Šμ•„λ„ κ΄€μ°° λͺ¨λ“œλ‘œ 전체 ν”„λ‘œμ νŠΈ 폴더λ₯Ό ν™•μΈν•˜κ³  μ—…λ°μ΄νŠΈ 사항이 적용될 수 있게 ν•˜λ©°, ν•΄λ‹Ή ν”„λ‘œμ νŠΈ ν΄λ”μ˜ λͺ¨λ“  νƒ€μž…μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ λ‹€μ‹œ μ»΄νŒŒμΌν•  수 있게 λœλ‹€. 즉, 이 ν”„λ‘œμ νŠΈ 폴더가 νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ 관리해야 ν•  ν”„λ‘œμ νŠΈλΌκ³  νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—κ²Œ μ•Œλ €μ£ΌλŠ” λͺ…령어라고 보면 λœλ‹€. ν•΄λ‹Ή λͺ…λ Ήμ–΄κ°€ μ‹€ν–‰λ˜λŠ” ν΄λ”μ˜ λͺ¨λ“  ν•­λͺ©μ„ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ— μ•Œλ €μ£ΌλŠ” 역할을 ν•˜κ²Œ 되며, ν•΄λ‹Ή ν”„λ‘œμ νŠΈλ₯Ό νƒ€μž…μŠ€ν¬λ¦½νŠΈ ν”„λ‘œμ νŠΈλΌκ³  νƒ€μž…μŠ€ν¬λ¦½νŠΈμ— μ²˜μŒμ— μ•Œλ €μ£ΌκΈ° μœ„ν•΄ 단 ν•œ 번만 μ‹€ν–‰ν•˜λ©΄ λœλ‹€. (λ”°λΌμ„œ, μ˜¬λ°”λ₯Έ 폴더 μœ„μΉ˜μ— λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€.) μ„€μΉ˜κ°€ λλ‚˜λ©΄, 이제 ν•΄λ‹Ή ν”„λ‘œμ νŠΈλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ κ΄€λ¦¬ν•˜κ²Œ 되며, tsconfig.json 파일 μ—­μ‹œ μƒμ„±λœλ‹€.

tsconfig.json νŒŒμΌμ€ νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ 관리해야 ν•˜λŠ” ν•΄λ‹Ή 파일이 ν¬ν•¨λœ ν”„λ‘œμ νŠΈμ™€ λͺ¨λ“  폴더와 ν•˜μœ„ 폴더λ₯Ό μ°Έκ³ ν•˜κΈ° μœ„ν•œ νŒŒμΌμ΄λ‹€. νŒŒμΌμ„ 보면 λ§Žμ€ μ˜΅μ…˜μ„ μ„€μ •ν•  수 μžˆλŠ” ν•­λͺ©λ“€μ΄ μžˆλ‹€. ν•œ 번 ν™•μΈν•΄λ³΄μž.

tsc;
  • 그런 ν›„, 이제 tsc λͺ…λ Ήμ–΄λ₯Ό νŠΉμ • νŒŒμΌμ„ μ§€μ •ν•˜μ§€ μ•Šκ³  ν•œ 번만 μ‹€ν–‰ν•˜λ©΄, νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” λͺ¨λ“  νƒ€μž…μŠ€ν¬λ¦½νŠΈ 파일, 즉 ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ˜ λͺ¨λ“  νƒ€μž…μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ 컴파일 ν•˜κ²Œ λœλ‹€. 그리고 tsc λͺ…λ Ήμ–΄ 싀행이 λλ‚˜λ©΄ λͺ¨λ“  νƒ€μž…μŠ€ν¬λ¦½νŠΈ 파일이 컴파일된 javascript 파일이 μƒμ„±λœλ‹€.
tsc --watch
tsc -w
  • λ§ˆμ§€λ§‰μœΌλ‘œ λͺ¨λ“  νŒŒμΌμ„ κ΄€μ°° λͺ¨λ“œλ‘œ κ²°ν•©ν•  수 μžˆλ„λ‘ watch λͺ¨λ“œλ₯Ό μ‹€ν–‰ν•œλ‹€. 이 μ—­μ‹œ μ•žμ—μ„œ tsc init으둜 λͺ¨λ“  νŒŒμΌλ“€μ„ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ κ΄€λ¦¬ν•΄μ£ΌκΈ°λ‘œ ν–ˆμœΌλ―€λ‘œ, νŠΉμ • νŒŒμΌμ„ μ§€μ •ν•˜μ§€ μ•Šμ•„λ„ λͺ¨λ“  νŒŒμΌμ— κ΄€μ°° λͺ¨λ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. 이제 λ³€κ²½ 사항을 μ μš©ν•˜λ©΄ λ³€κ²½λœ 파일이 λ‹€μ‹œ μžλ™μœΌλ‘œ 컴파일 되며, μžλ°”μŠ€ν¬λ¦½νŠΈ 파일둜 변경사항이 λ°˜μ˜λ˜λŠ” κ±Έ μ•Œ 수 μžˆλ‹€.

✧ 파일 포함 및 μ œμ™Έν•˜κΈ°

  • μ—¬λŸ¬ 파일둜 μž‘μ—…ν•  λ•Œ 바닐라 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ νŒŒμΌμ„ κ°€μ Έμ˜¬ μˆ˜κ°€ μžˆλ‹€. μ§€κΈˆμ˜ ν”„λ‘œμ νŠΈλ₯Ό μ‚΄νŽ΄λ³΄λ©΄, index.html을 톡해 두 νŒŒμΌμ„ ν•œ κΊΌλ²ˆμ— κ°€μ Έμ˜€κ³  μžˆλ‹€.
<script src="app.js" defer></script>
<script src="analytics.js" defer></script>
  • μ•žμœΌλ‘œ μ†Œκ°œν•  방식을 μ‚¬μš©ν•˜μ—¬ 이제 두 개의 νŒŒμΌμ„ ν”„λ‘œμ νŠΈλ‘œμ„œ 관리할 수 있고 μ—¬λŸ¬ νŒŒμΌλ„ 컴파일 ν•  수 있게 λœλ‹€. tsconfig.json νŒŒμΌμ„ μ‚΄νŽ΄λ³΄μž.

tsconfig.json

  • tsconfig.json νŒŒμΌμ€ ν”„λ‘œμ νŠΈμ˜ νŒŒμΌλ“€μ„ μ–΄λ–»κ²Œ 컴파일 ν•΄μ•Ό ν•˜λŠ”μ§€ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—κ²Œ μ•Œλ €μ£ΌλŠ” 역할을 ν•œλ‹€. ν•΄λ‹Ή 파일의 compilerOptions μ„€μ • λ‹€μŒμ— μš°λ¦¬κ°€ μ„€μ •ν•  수 μžˆλŠ” μ˜΅μ…˜μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.

exclude

  • 이 μ˜΅μ…˜λ“€μ€ μ»΄νŒŒμΌλŸ¬λ‚˜ 컴파일 단계 λ™μž‘μ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šκ³  λŒ€μ‹  μ»΄νŒŒμΌλŸ¬κ°€ 이 ν”„λ‘œμ νŠΈμ—μ„œ μž‘λ™ν•˜λŠ” 방식을 μ˜λ―Έν•œλ‹€.
  "exclude": [
    "" // would be the default
  ]
  • exclude μ˜΅μ…˜μ„ μ„€μ •ν•΄λ³΄μž. 여기에 exclude을 μΆ”κ°€ν•˜λ©΄ μ΄λŠ” λ¬Έμžμ—΄μ΄ λœλ‹€. 그리고 κ·Έ κ°’μœΌλ‘œ 전체 ν”„λ‘œμ νŠΈλ₯Ό μƒλŒ€λ‘œ tsc λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  λ•Œ 컴파일 λ˜μ„œλŠ” μ•ˆλ˜λŠ” νŒŒμΌμ„ λΆ„μ„ν•΄μ„œ μ»΄νŒŒμΌμ„ 막아쀀닀. 예λ₯Ό λ“€μ–΄,
  "exclude": [
    "analytics.ts" // would be the default
  ]
  • analytics.ts νŒŒμΌμ„ μ»΄νŒŒμΌμ—μ„œ μ œμ™Έ(exclude)ν•˜κ³  μ‹Άλ‹€λ©΄ μΆ”κ°€ν•œλ‹€. μ €μž₯ν•˜κ³  tsc λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄, analytics.ts만 μ œμ™Έν•˜κ³  λͺ¨λ“  νƒ€μž…μŠ€ν¬λ¦½νŠΈ 파일이 컴파일 λœλ‹€.
  "exclude": [
    "*.dev.ts" // would be the default
  ]
  • λ§Œμ•½ μ™€μΌλ“œμΉ΄λ“œ 문자인 λ³„ν‘œ(*)λ₯Ό μ•žμ— μΆ”κ°€ν•˜λ©΄ νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” dev.tsκ°€ ν¬ν•¨λœ 이름인 λͺ¨λ“  νŒŒμΌμ„ λ¬΄μ‹œν•˜κ²Œ λœλ‹€.
  "exclude": [
    "**/*.dev.ts" // would be the default
  ]
  • λ§Œμ•½ **/*λ₯Ό μ•žμ— μΆ”κ°€ν•˜λ©΄ λͺ¨λ“  ν΄λ”μ—μ„œ 이와 같은 νŒ¨ν„΄(dev.ts)의 λͺ¨λ“  νŒŒμΌμ„ λ¬΄μ‹œν•˜κ²Œ λœλ‹€.
  "exclude": [
    "node_modules" // would be the default
  ]
  • μ‹€μ œλ‘œ 자주 μΆ”κ°€ν•˜λŠ” μ˜΅μ…˜μΈ node_modules 폴더λ₯Ό μΆ”κ°€ν•΄μ„œ μ»΄νŒŒμΌμ—μ„œ μ œμ™Έ(exclude)μ‹œν‚¨λ‹€.

πŸ“ node_modules ν΄λ”μ—λŠ” package.json에 μ„€μΉ˜ν•œ λͺ¨λ“  쒅속성와 이 μ’…μ†μ„±λ“€μ˜ λͺ¨λ“  쒅속성이 ν¬ν•¨λ˜μ–΄ μžˆλ‹€. 즉, λ³€κ²½ν•˜μ§€ 말아야 ν•˜λŠ” 타사 라이브러리λ₯Ό κ°€μ Έμ˜€λŠ” μœ„μΉ˜μ΄λ‹€. λ˜ν•œ μ’…μ†μ„±μ˜ 타사 λΌμ΄λΈŒλŸ¬λ¦¬λ“€ 쀑 일뢀가 νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μ œκ³΅ν•˜λŠ” 경우 λ‹Ήμ—°νžˆ 컴파일 λ˜λŠ” 것을 막아야 ν•  것이닀. μ»΄νŒŒμΌμ„ ν•˜κ²Œ 되면 μ—°μ‚° 과정이 λŠλ €μ Έμ„œ μ΅œμ•…μ˜ κ²½μš°μ— ν”„λ‘œμ νŠΈκ°€ λ§κ°€μ§ˆ μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€.

  • ν•˜μ§€λ§Œ, exclude μ˜΅μ…˜μ„ μ•„μ˜ˆ μ§€μ •ν•˜μ§€ μ•Šκ²Œ 되면,
//   "exclude": [
//     "node_modules" // would be the default
//   ]
  • node_modulesλŠ” κΈ°λ³Έ 섀정상 μžλ™μœΌλ‘œ μ œμ™Έλœλ‹€. λ”°λΌμ„œ ꡳ이 node_modulesλ₯Ό μ»΄νŒŒμΌμ—μ„œ μ œμ™Έμ‹œν‚€κΈ° μœ„ν•΄ exclude μ˜΅μ…˜μ„ μΆ”κ°€ν•  ν•„μš”λŠ” μ—†λ‹€. 즉, exclude λΌλŠ” 컴파일 μ œμ™Έ μ˜΅μ…˜μ΄ 있긴 ν•˜μ§€λ§Œ, μ œμ™Έν•˜κ³ μž ν•˜λŠ” ν•­λͺ©μ΄ node_modules인 경우 exclude 섀정을 μΆ”κ°€ν•  ν•„μš”λŠ” μ „ν˜€ μ—†λ‹€λŠ” μ˜λ―Έμ΄λ‹€.

include

  "include": [
    "app.ts"
  ]
  • includeλŠ” exclude와 λ°˜λŒ€ κ°œλ…μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€. includeλŠ” 컴파일 과정에 ν¬ν•¨μ‹œν‚¬ νŒŒμΌμ„ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ— μ˜λ„μ μœΌλ‘œ μ•Œλ €μ„œ include μ˜΅μ…˜μ— ν¬ν•¨λ˜μ§€ μ•Šμ€ κ·Έ μ–΄λ–€ νŒŒμΌμ΄λ‚˜ 폴더도 μ»΄νŒŒμΌλ˜μ§€ μ•Šλ„λ‘ ν•œλ‹€. ν•˜μ§€λ§Œ include 섀정을 ν•˜λ©΄ μ»΄νŒŒμΌν•˜κ³ μž ν•˜λŠ” 'λͺ¨λ“ ' ν•­λͺ©μ„ ν¬ν•¨μ‹œμΌœμ•Ό ν•œλ‹€. include 섀정을 ν–ˆμ„ λ•Œ ν¬ν•¨λ˜μ§€ μ•ŠλŠ” νŒŒμΌμ€ 컴파일 λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ£Όμ˜ν•΄μ„œ μ‚¬μš©ν•΄μ•Όλ§Œ ν•œλ‹€.

files

  "files": [
    "app.ts"
  ]
  • files 섀정은 include와 λ‹€μ†Œ λΉ„μŠ·ν•˜μ§€λ§Œ includeλŠ” μ œμ™Έν•˜κ³ μž ν•˜λŠ” ν•­λͺ©μœΌλ‘œ 전체 폴더λ₯Ό 지정할 수 μžˆμ§€λ§Œ, files 섀정은 컴파일 ν•˜κ³ μž ν•˜λŠ” '개발 파일'λ§Œμ„ 지정할 수 μžˆλ‹€. ν•΄λ‹Ή μ˜΅μ…˜μ€ 규λͺ¨κ°€ μž‘μ€ ν”„λ‘œμ νŠΈμ— μ‚¬μš©ν•˜λ©΄ 쒋을 것이닀.

정리

  • μ‹€μ œλ‘œλŠ” λ§Žμ€ μ˜΅μ…˜ κΈ°λŠ₯을 μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ, κΈ°λ³Έ 컴파일 κΈ°λŠ₯μ΄λ‚˜ ν”„λ‘œμ νŠΈ 관리 μ˜΅μ…˜λ§Œ μ‚¬μš©ν•˜κ²Œ 될 것이닀. λ¬Όλ‘  컴파일러 μžμ²΄μ™€ 컴파일 λ‹¨κ³„μ—μ„œμ˜ μž‘λ™ 방식에 λŒ€ν•΄ 지정할 수 μžˆλŠ” 방법은 λ‹€μ–‘ν•˜λ‹€.

✧ 컴파일 λŒ€μƒ μ„€μ •ν•˜κΈ°

  • 이제 컴파일러둜 νŒŒμΌμ„ κ΄€λ¦¬ν•˜λŠ” 방법을 μ•Œμ•„λ³΄μž. tsconfig.json 파일의 첫 번째 μ˜΅μ…˜μΈ compilerOptionsλ₯Ό μ‚΄νŽ΄λ³΄λ©΄, ν₯미둜운 지점이 λ§Žλ‹€. compilerOptions은 νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ½”λ“œκ°€ μ»΄νŒŒμΌλ˜λŠ” 방식을 κ΄€λ¦¬ν•˜λŠ” μ˜΅μ…˜μ΄λ‹€. compilerOptions μ—μ„œλŠ” μ–΄λ–€ νŒŒμΌμ„ μ»΄νŒŒμΌν• μ§€, 그리고 μ»΄νŒŒμΌλ˜λŠ” 파일이 νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ μ–΄λ–»κ²Œ μ²˜λ¦¬λ˜μ–΄μ•Ό ν•˜λŠ”μ§€λ₯Ό μ„€μ •ν•  수 μžˆλ‹€. μ‚΄νŽ΄λ³΄λ©΄, 기본적으둜 μ„€μ •λœ μ˜΅μ…˜(주석 처리된)듀이 λ§Žμ€ κ±Έ μ•Œ 수 μžˆλ‹€. 각각의 μ˜΅μ…˜μ—λŠ” μ£Όμ„μ²˜λ¦¬μ™€ ν•¨κ»˜ κ°„λ‹¨ν•œ μ„€λͺ…이 μžˆλŠ”λ°, λŒ€λΆ€λΆ„μ˜ μ˜΅μ…˜λ“€μ€ 싀무 ν”„λ‘œμ νŠΈμ—μ„œ 그닀지 μ€‘μš”ν•˜μ§€ μ•Šμ„ κ°€λŠ₯성이 λ†’μœΌλ―€λ‘œ λͺ¨λ“  μ˜΅μ…˜μ„ μ„€μ •ν•˜κ±°λ‚˜ κ³ λ €ν•  ν•„μš”λŠ” μ—†λ‹€.

compilerOptions의 target μ˜΅μ…˜

{
  "compilerOptions": {
    /* Basic Options */
    "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */,
    "module": "commonjs"
  }
}
  • target μ˜΅μ…˜μ€ compilerOptions 에 기본적으둜 μ„€μ •λ˜μ–΄ μžˆλ‹€. 이 μ˜΅μ…˜μœΌλ‘œλŠ” μ–΄λ–€ μžλ°”μŠ€ν¬λ¦½νŠΈ '버전'을 λŒ€μƒμœΌλ‘œ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•  것인지 νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—κ²Œ μ•Œλ €μ€„ 수 μžˆλ‹€. νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œμ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” νƒ€μž… 주석과 같은 μƒˆλ‘œμš΄ κΈ°λŠ₯만 μ»΄νŒŒμΌν•˜λŠ” 것이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ΄λ‹€. λ”°λΌμ„œ 이 μ˜΅μ…˜μ€ νŠΉμ • λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•œλ‹€. target을 μ„€μ •ν•˜λ©΄, μ–΄λ–€ λΈŒλΌμš°μ €κ°€ λ””μ»΄νŒŒμΌλœ μ½”λ“œλ₯Ό μ§€μ›ν•˜λŠ”μ§€ μ •μ˜ν•  것이닀. ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ˜ target의 κΈ°λ³Έ 값은 es5 인데, μ΄λŠ” λͺ¨λ“  μœ ν˜•μ˜ μ½”λ“œκ°€ μ»΄νŒŒμΌλ˜μ—ˆλ‹€λŠ” μ˜λ―Έλ‹€. tsc λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ λͺ¨λ“  νŒŒμΌμ„ μ»΄νŒŒμΌν•΄λ³΄μž.

app.ts

let age: number;
age = 30;

const userName = "Maximilian";
console.log(userName);

app.js

"use strict";
var age;
age = 30;
var userName = "Maximilian";
console.log(userName);
  • app.tsλŠ” letκ³Ό constλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ”λ°, app.jsλŠ” varλ₯Ό μ΄μš©ν•˜κ³  μžˆλŠ” κ±Έ μ•Œ 수 μžˆλ‹€. μ΄λŠ” target μ˜΅μ…˜μ˜ κΈ°λ³Έ 값은 es5이고, es5μ—λŠ” letκ³Ό constκ°€ ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μΌμ–΄λ‚œ 일이닀. μ—¬κΈ°μ„œ μ•Œ 수 μžˆλŠ” 쒋은 점은 νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ 이전 λΈŒλΌμš°μ €μ—μ„œλ„ μž‘λ™ν•˜λŠ” μ½”λ“œλ₯Ό 생성할 수 μžˆλ‹€λŠ” 점이닀.

정리

  • λ¬Όλ‘  target μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λŠ” 것은 μ „μ μœΌλ‘œ 선택에 λ‹¬λ €μžˆλ‹€. 그리고 νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ ꡳ이 이런 μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€ν™˜μ„ μ§€μ›ν•˜λŠ” λ‹€λ₯Έ λΉŒλ“œ 도ꡬ듀도 μΆ©λΆ„νžˆ 많기 λ•Œλ¬Έμ΄λ‹€. ν˜Ήμ€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ΅œμ‹  λΈŒλΌμš°μ €μ—μ„œλ§Œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— μ΅œμ‹  λΈŒλΌμš°μ €μ—μ„œλ§Œ μž‘λ™ν•˜λŠ” μ½”λ“œλ‘œ ꡬ성해야 ν•˜λŠ” κ²½μš°λ„ μžˆμ„ λ•ŒλΌλ©΄ ꡳ이 target μ˜΅μ…˜μ„ μ΄λ ‡κ²Œ μ‚¬μš©ν•  ν•„μš”λŠ” 없을 것이닀.

  • λ‹Ήμ—°νžˆ, target μ˜΅μ…˜μ—μ„œ κΈ°λ³Έ κ°’μœΌλ‘œ μ„ νƒν•˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 버전이 μ΅œμ‹ μΌ 수둝 μƒμ„±λ˜λŠ” μ½”λ“œλŠ” 더 간결해지며, μ΄λŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ 점차 더 적은 μ–‘μ˜ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜λ©° μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κΈ°λŠ₯에 λŒ€ν•΄ μž‘μ—…μ„ ν•΄μ•Όν•˜λŠ” κ²½μš°κ°€ 쀄어듀기 λ•Œλ¬ΈμΌ 것이닀. λ”°λΌμ„œ 컴파일된 μ½”λ“œλŠ” target μ˜΅μ…˜ 값이 μ΅œμ‹  버전일 수둝 더 κ°„κ²°ν•˜κ³  짧아진닀.


✦ 좜처


🚨 ν•΄λ‹Ή ν¬μŠ€νŒ…μ€ Udemy의 Typescript :κΈ°μ΄ˆλΆ€ν„° μ‹€μ „ν˜• ν”„λ‘œμ νŠΈκΉŒμ§€ with React + NodeJS κ°•μ˜λ₯Ό 베이슀둜 ν•œ κΈ°λ‘μž…λ‹ˆλ‹€.
✍🏻 κ°•μ˜ git repo λ°”λ‘œκ°€κΈ°

profile
일단 곡뢀가 '적성'에 λ§žλŠ” 개발자. κ·Όμ„±μžˆμŠ΅λ‹ˆλ‹€.

0개의 λŒ“κΈ€