본문으둜 κ±΄λ„ˆλ›°κΈ°

πŸš€ λͺ©μ°¨

πŸ‘‰ μƒ˜ν”Œ μ½”λ“œ : https://github.com/danvk/effective-typescript​

✌️ μ±… 정보​

πŸ“š μ±… λͺ©μ°¨β€‹

🎈 Chapter 1: νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ•Œμ•„λ³΄κΈ°β€‹

  1. νƒ€μž…μŠ€ν¬λ¦½νŠΈμ™€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 관계 μ΄ν•΄ν•˜κΈ°
  2. νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ„€μ • μ΄ν•΄ν•˜κΈ°
  3. μ½”λ“œ 생성과 νƒ€μž…μ΄ κ΄€κ³„μ—†μŒμ„ μ΄ν•΄ν•˜κΈ°
  4. ꡬ쑰적 타이핑에 μ΅μˆ™ν•΄μ§€κΈ°
  5. any νƒ€μž… μ§€μ–‘ν•˜κΈ°

🎈 Chapter 2: νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ νƒ€μž… μ‹œμŠ€ν…œβ€‹

  1. νŽΈμ§‘κΈ°λ₯Ό μ‚¬μš©ν•˜μ—¬ νƒ€μž… μ‹œμŠ€ν…œ νƒμƒ‰ν•˜κΈ°
  2. νƒ€μž…μ΄ κ°’λ“€μ˜ 집합이라고 μƒκ°ν•˜κΈ°
  3. νƒ€μž… 곡간과 κ°’ κ³΅κ°„μ˜ μ‹¬λ²Œ κ΅¬λΆ„ν•˜κΈ°
  4. νƒ€μž… λ‹¨μ–Έλ³΄λ‹€λŠ” νƒ€μž… 선언을 μ‚¬μš©ν•˜κΈ°
  5. 객체 래퍼 νƒ€μž… ν”Όν•˜κΈ°
  6. μž‰μ—¬ 속성 체크의 ν•œκ³„ μΈμ§€ν•˜κΈ°
  7. ν•¨μˆ˜ ν‘œν˜„μ‹μ— νƒ€μž… μ μš©ν•˜κΈ°
  8. νƒ€μž…κ³Ό μΈν„°νŽ˜μ΄μŠ€μ˜ 차이점 μ•ŒκΈ°
  9. νƒ€μž… μ—°μ‚°κ³Ό μ œλ„ˆλ¦­ μ‚¬μš©μœΌλ‘œ 반볡 쀄이기
  10. 동적 데이터에 인덱슀 μ‹œκ·Έλ‹ˆμ²˜ μ‚¬μš©ν•˜κΈ°
  11. number 인덱슀 μ‹œκ·Έλ‹ˆμ²˜λ³΄λ‹€λŠ” Array, νŠœν”Œ, ArrayLikeλ₯Ό μ‚¬μš©ν•˜κΈ°
  12. λ³€κ²½ κ΄€λ ¨λœ 였λ₯˜ 방지λ₯Ό μœ„ν•΄ readonly μ‚¬μš©ν•˜κΈ°
  13. λ§€ν•‘λœ νƒ€μž…μ„ μ‚¬μš©ν•˜μ—¬ 값을 λ™κΈ°ν™”ν•˜κΈ°

🎈 Chapter 3: νƒ€μž… 좔둠​

  1. μΆ”λ‘  κ°€λŠ₯ν•œ νƒ€μž…μ„ μ‚¬μš©ν•΄ μž₯ν™©ν•œ μ½”λ“œ λ°©μ§€ν•˜κΈ°
  2. λ‹€λ₯Έ νƒ€μž…μ—λŠ” λ‹€λ₯Έ λ³€μˆ˜ μ‚¬μš©ν•˜κΈ°
  3. νƒ€μž… λ„“νžˆκΈ°
  4. νƒ€μž… 쒁히기
  5. ν•œκΊΌλ²ˆμ— 객체 μƒμ„±ν•˜κΈ°
  6. 일관성 μžˆλŠ” 별칭 μ‚¬μš©ν•˜κΈ°
  7. 비동기 μ½”λ“œμ—λŠ” 콜백 λŒ€μ‹  async ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
  8. νƒ€μž… 좔둠에 λ¬Έλ§₯이 μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠ”μ§€ μ΄ν•΄ν•˜κΈ°
  9. ν•¨μˆ˜ν˜• 기법과 라이브러리둜 νƒ€μž… 흐름 μœ μ§€ν•˜κΈ°

🎈 Chapter 4: νƒ€μž… 섀계​

  1. μœ νš¨ν•œ μƒνƒœλ§Œ ν‘œν˜„ν•˜λŠ” νƒ€μž…μ„ 지ν–₯ν•˜κΈ°
  2. μ‚¬μš©ν•  λ•ŒλŠ” λ„ˆκ·ΈλŸ½κ²Œ, 생성할 λ•ŒλŠ” μ—„κ²©ν•˜κ²Œ
  3. λ¬Έμ„œμ— νƒ€μž… 정보λ₯Ό 쓰지 μ•ŠκΈ°
  4. νƒ€μž… 주변에 nullκ°’ λ°°μΉ˜ν•˜κΈ°
  5. μœ λ‹ˆμ˜¨μ˜ μΈν„°νŽ˜μ΄μŠ€λ³΄λ‹€λŠ” μΈν„°νŽ˜μ΄μŠ€μ˜ μœ λ‹ˆμ˜¨μ„ μ‚¬μš©ν•˜κΈ°
  6. string νƒ€μž…λ³΄λ‹€ 더 ꡬ체적인 νƒ€μž… μ‚¬μš©ν•˜κΈ°
  7. λΆ€μ •ν™•ν•œ νƒ€μž…λ³΄λ‹€λŠ” λ―Έμ™„μ„± νƒ€μž…μ„ μ‚¬μš©ν•˜κΈ°
  8. 데이터가 μ•„λ‹Œ, API와 λͺ…μ„Έλ₯Ό 보고 νƒ€μž… λ§Œλ“€κΈ°
  9. ν•΄λ‹Ή λΆ„μ•Όμ˜ μš©μ–΄λ‘œ νƒ€μž… 이름 짓기
  10. 곡식 λͺ…μΉ­μ—λŠ” μƒν‘œλ₯Ό 뢙이기

🎈 Chapter 5. any 닀루기​

  1. μ•„μ΄ν…œ 38. any νƒ€μž…μ€ κ°€λŠ₯ν•œ ν•œ 쒁은 λ²”μœ„μ—μ„œλ§Œ μ‚¬μš©ν•˜κΈ°
  2. anyλ₯Ό ꡬ체적으둜 λ³€ν˜•ν•΄μ„œ μ‚¬μš©ν•˜κΈ°
  3. ν•¨μˆ˜ μ•ˆμœΌλ‘œ νƒ€μž… 단언문 감좔기
  4. any의 진화λ₯Ό μ΄ν•΄ν•˜κΈ°
  5. λͺ¨λ₯΄λŠ” νƒ€μž…μ˜ κ°’μ—λŠ” any λŒ€μ‹  unknown을 μ‚¬μš©ν•˜κΈ°
  6. λͺ½ν‚€ νŒ¨μΉ˜λ³΄λ‹€λŠ” μ•ˆμ „ν•œ νƒ€μž…μ„ μ‚¬μš©ν•˜κΈ°
  7. νƒ€μž… 컀버리지λ₯Ό μΆ”μ ν•˜μ—¬ νƒ€μž… μ•ˆμ „μ„± μœ μ§€ν•˜κΈ°

🎈 Chapter 6. νƒ€μž… μ„ μ–Έκ³Ό @types​

  1. devDependencies에 typescript와 @typesμΆ”κ°€ν•˜κΈ°
  2. νƒ€μž… μ„ μ–Έκ³Ό κ΄€λ ¨λœ μ„Έ 가지 버전 μ΄ν•΄ν•˜κΈ°
  3. 곡게 API에 λ“±μž₯ν•˜λŠ” λͺ¨λ“  νƒ€μž…μ„ μ΅μŠ€ν¬νŠΈν•˜κΈ°
  4. API 주석에 TSDoc μ‚¬μš©ν•˜κΈ°
  5. μ½œλ°±μ—μ„œ this에 λŒ€ν•œ νƒ€μž… μ œκ³΅ν•˜κΈ°
  6. μ˜€λ²„λ‘œλ”© νƒ€μž…λ³΄λ‹€λŠ” 쑰건뢀 νƒ€μž… μ‚¬μš©ν•˜κΈ°
  7. μ˜μ‘΄μ„± 뢄리λ₯Ό μœ„ν•΄ 미러 νƒ€μž… μ‚¬μš©ν•˜κΈ°
  8. ν…ŒμŠ€νŒ… νƒ€μž…μ˜ 함정에 μ£Όμ˜ν•˜κΈ°

🎈 Chapter 7. μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  μ‹€ν–‰ν•˜κΈ°β€‹

  1. νƒ€μž…μŠ€ν¬λ¦½νŠΈ κΈ°λŠ₯λ³΄λ‹€λŠ” ECMAScript κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ°
  2. 객체λ₯Ό μˆœνšŒν•˜λŠ” λ…Έν•˜μš°
  3. DOM 계측 ꡬ쑰 μ΄ν•΄ν•˜κΈ°
  4. 정보λ₯Ό κ°μΆ”λŠ” λͺ©μ μœΌλ‘œ private μ‚¬μš©ν•˜μ§€ μ•ŠκΈ°
  5. μ†ŒμŠ€λ§΅μ„ μ‚¬μš©ν•˜μ—¬ νƒ€μž…μŠ€ν¬λ¦½νŠΈ λ””λ²„κΉ…ν•˜κΈ°

🎈 Chapter 8. νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•˜κΈ°β€‹

  1. λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μž‘μ„±ν•˜κΈ°
  2. νƒ€μž…μŠ€ν¬λ¦½νŠΈ λ„μž… 전에 @ts-check와 JSDoc으둜 μ‹œν—˜ν•΄ 보기
  3. allowJs둜 νƒ€μž…μŠ€ν¬λ¦½νŠΈμ™€ μžλ°”μŠ€ν¬λ¦½νŠΈ 같이 μ‚¬μš©ν•˜κΈ°
  4. μ˜μ‘΄μ„± 관계에 따라 λͺ¨λ“ˆ λ‹¨μœ„λ‘œ μ „ν™˜ν•˜κΈ°
  5. λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ˜ 완성을 μœ„ν—€ noImplicitAny μ„€μ •ν•˜κΈ°