《이펙티브 타입스크립트: 동작 원리의 이해와 구체적인 조언 62가지》 책을 기반으로 공부한 내용을 기록합니다.
Effective TypeScript 스터디 레포지토리 바로가기
-
Chapter 1: Getting to Know TypeScript
-
Chapter 2: TypeScript’s Type System
- 📝 Item 6: Use Your Editor to Interrogate and Explore the Type System
- 📝 Item 7: Think of Types as Sets of Values
- 📝 Item 8: Know How to Tell Whether a Symbol Is in the Type Space or Value Space
- 📝 Item 9: Prefer Type Declarations to Type Assertions
- 📝 Item 10: Avoid Object Wrapper Types (String, Number, Boolean, Symbol, BigInt)
- 📝 Item 11: Recognize the Limits of Excess Property Checking
- 📝 Item 12: Apply Types to Entire Function Expressions When Possible
- 📝 Item 13: Know the Differences Between type and interface
- 📝 Item 14: Use Type Operations and Generics to Avoid Repeating Yourself
- 📝 Item 15: Use Index Signatures for Dynamic Data
- 📝 Item 16: Prefer Arrays, Tuples, and ArrayLike to number Index Signatures
- 📝 Item 17: Use readonly to Avoid Errors Associated with Mutation
- 📝 Item 18: Use Mapped Types to Keep Values in Sync
-
Chapter 3: Type Inference
- 📝 Item 19: Avoid Cluttering Your Code with Inferable Types
- 📝 Item 20: Use Different Variables for Different Types
- 📝 Item 21: Understand Type Widening
- 📝 Item 22: Understand Type Narrowing
- 📝 Item 23: Create Objects All at Once
- 📝 Item 24: Be Consistent in Your Use of Aliases
- 📝 Item 25: Use async Functions Instead of Callbacks for Asynchronous Code
- 📝 Item 26: Understand How Context Is Used in Type Inference
- 📝 Item 27: Use Functional Constructs and Libraries to Help Types Flow
-
Chapter 4: Type Design
- 📝 Item 28: Prefer Types That Always Represent Valid States
- 📝 Item 29: Be Liberal in What You Accept and Strict in What You Produce
- 📝 Item 30: Don’t Repeat Type Information in Documentation
- 📝 Item 31: Push Null Values to the Perimeter of Your Types
- 📝 Item 32: Prefer Unions of Interfaces to Interfaces of Unions
- 📝 Item 33: Prefer More Precise Alternatives to String Types
- 📝 Item 34: Prefer Incomplete Types to Inaccurate Types
- 📝 Item 35: Generate Types from APIs and Specs, Not Data
- 📝 Item 36: Name Types Using the Language of Your Problem Domain
- 📝 Item 37: Consider “Brands” for Nominal Typing
-
Chapter 5: Working with any
- 📝 Item 38: Use the Narrowest Possible Scope for any Types
- 📝 Item 39: Prefer More Precise Variants of any to Plain any
- 📝 Item 40: Hide Unsafe Type Assertions in Well-Typed Functions
- 📝 Item 41: Understand Evolving any
- 📝 Item 42: Use unknown Instead of any for Values with an Unknown Type
- 📝 Item 43: Prefer Type-Safe Approaches to Monkey Patching
- 📝 Item 44: Track Your Type Coverage to Prevent Regressions in Type Safety
-
Chapter 6: Types Declarations and @types
- 📝 Item 45: Put TypeScript and @types in devDependencies
- 📝 Item 46: Understand the Three Versions Involved in Type Declarations
- 📝 Item 47: Export All Types That Appear in Public APIs
- 📝 Item 48: Use TSDoc for API Comments
- 📝 Item 49: Provide a Type for this in Callbacks
- 📝 Item 50: Prefer Conditional Types to Overloaded Declarations
- 📝 Item 51: Mirror Types to Sever Dependencies
- 📝 Item 52: Be Aware of the Pitfalls of Testing Types
-
Chapter 7: Writing and Running Your Code
-
Chapter 8. Migrating to TypeScript