Skip to content

Effective TypeScript: 62 Specific Ways to Improve Your TypeScript

License

Notifications You must be signed in to change notification settings

nachoesmite/effective-typescript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Effective Typescript

This is the code sample repo for Effective TypeScript: 62 Specific Ways to Improve Your TypeScript. The book is available through:

and others. Here are the items with associated code samples:

  • Chapter 1: Getting to Know TypeScript

    • 📝 Item 1: Understand the Relationship Between TypeScript and JavaScript
    • 📝 Item 2: Know Which TypeScript Options You’re Using
    • 📝 Item 3: Understand That Code Generation Is Independent of Types
    • 📝 Item 4: Get Comfortable with Structural Typing
    • 📝 Item 5: Limit Use of the any Type
  • 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

    • 📝 Item 53: Prefer ECMAScript Features to TypeScript Features
    • 📝 Item 54: Know How to Iterate Over Objects
    • 📝 Item 55: Understand the DOM hierarchy
    • 📝 Item 56: Don’t Rely on Private to Hide Information
    • 📝 Item 57: Use Source Maps to Debug TypeScript
  • Chapter 8. Migrating to TypeScript

    • 📝 Item 58: Write Modern JavaScript
    • 📝 Item 59: Use @ts-check and JSDoc to Experiment with TypeScript
    • 📝 Item 60: Use allowJs to Mix TypeScript and JavaScript
    • 📝 Item 61: Convert Module by Module Up Your Dependency Graph
    • 📝 Item 62: Don’t Consider Migration Complete Until You Enable noImplicitAny

About

Effective TypeScript: 62 Specific Ways to Improve Your TypeScript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published