World Congress 2022 • Jun 15, 2022

Building software that scales with Typescript

Tal Joffe

True scalability isn't just handling high traffic; it's managing massive codebases efficiently. Discover how combining TypeScript with Clean Architecture enforces strict boundaries and drastically reduces technical debt.

Pause
Mute Enter Fullscreen
#1 about 3 min

Introduction to scaling software systems with TypeScript

Identifying readability, structure, and enforcement as key pillars enables successful codebase scaling.

#2 about 3 min

Improving readability with strict function signatures and return types

Defining explicit return types and optional values replaces ambiguous implementations with self-documenting code.

#3 about 5 min

Separating data elements from business logic routines

Extracting data fields into separate classes from execution logic enforces single responsibility boundaries.

#4 about 6 min

Architecting modular systems with predictable code structures

Organizing code by core business entity rather than generalized features creates resilient directories that withstand constant modification.

#5 about 3 min

Enforcing object shape constraints at compile time

Applying native type utilities like readonly prevents structural decay by strictly policing object mutations at compile time.

#6 about 3 min

Using conventions and interfaces to enforce architectural patterns

Utilizing typed interfaces for commands and queries standardizes controller behaviors and prevents divergent implementation styles.

#7 about 5 min

Minimizing type verbosity and maintenance overhead in projects

Relying on native type inference and derivation utilities prevents redundant abstractions while preserving strict safety.

#8 about 2 min

Evaluating structural scalability and developer update confidence

Gauging how quickly developers identify modification targets determines the true success of architectural planning.

#9 about 4 min

Building descriptive integration tests with strict data typing

Shifting test focus toward integration interactions ensures business cases execute correctly while static analysis maintains data alignment.

#10 about 2 min

Migrating legacy projects to clean structural architecture patterns

Refactoring peripheral gateways or data access modules first minimizes risk before attempting complex business logic overhauls.

#11 about 2 min

Choosing appropriate formatting and linting tools for codebases

Adopting commonly used community linting presets dramatically simplifies configuration troubleshooting across teams.

#12 about 2 min

Prioritizing folder organization over flat global file structures

Structuring deeply planned project directories prevents accidental duplication and tangled dependencies by clarifying intended file locations.

#13 about 1 min

Evaluating the anemic domain model approach in practice

Separating data objects from execution routines introduces known anti-patterns but consistently yields highly maintainable application states.

#14 about 3 min

Limiting API mocking boundaries in software integration tests

Exercising internal behavior implementations without extensive mocking guarantees realistic application flows during integration testing.

Matching moments

1:20 min

Core takeaways for end-to-end TypeScript development

Marco Podien Marco Podien · World Congress 2025

9:46 min

Questions on architecture typing and team organization

Trishul Goel · JS Congress

2:28 min

Exploring the benefits of type safety and TypeScript migration

Chris Heilmann Chris Heilmann +2 · LIVE

2:00 min

The origins and early problems solved by TypeScript

Dani Coll Dani Coll · World Congress 2026 Europe

2:51 min

Deciding when to adopt or avoid TypeScript

Rob Richardson · LIVE

9:52 min

Safely migrating legacy JavaScript codebases to strict TypeScript

Chris Heilmann Chris Heilmann +2 · LIVE