Tal Joffe

All you need is types

Is your TypeScript just Java in disguise? Learn a functional approach using types, not classes, to build truly scalable applications.

All you need is types
#1about 3 minutes

Understanding TypeScript's origins and role in scalability

TypeScript was created for object-oriented developers but can be used in a more native JavaScript style to help manage large-scale projects.

#2about 4 minutes

Achieving scalability with readability, structure, and enforcement

Scalable codebases depend on readability for faster comprehension, clear structure for discoverability, and enforcement to maintain quality over time.

#3about 6 minutes

Improving code structure by separating data from logic

Instead of combining data and behavior in classes, separate them into distinct types for data and functions for logic to create a clearer, more maintainable structure.

#4about 6 minutes

Using types to enforce data integrity and logic patterns

TypeScript natively enforces data shapes, and you can extend this by using utility types and creating custom types to enforce design patterns like CQS.

#5about 8 minutes

Minimizing boilerplate code with advanced TypeScript features

Reduce code overhead by leveraging type inference, avoiding complex OOP patterns, and using utility types like `keyof` and `ReturnType` to generate new types from existing ones.

#6about 7 minutes

Building confidence with static analysis and typed testing

TypeScript's static analysis catches errors at build time, and using explicit types in tests ensures mocks are accurate, leading to more reliable integration tests.

#7about 2 minutes

Summary of using types for scalable codebases

By focusing on types for readability, structure, and enforcement, developers can build scalable applications while minimizing boilerplate through a functional approach.

#8about 6 minutes

Applying clean code principles for naming and errors

Follow the "clean code" principle that names should reveal intent, and adopt a functional approach to error handling by returning errors instead of throwing them.

#9about 3 minutes

Deciding between types, interfaces, and transpilers

Use types and interfaces interchangeably based on preference, with interfaces being more idiomatic for classes, and combine TypeScript with Babel for broader browser compatibility.

#10about 4 minutes

Practical advice on undefined returns and JS migration

Use union types with `undefined` to make potential null states explicit, and migrate existing JavaScript projects by converting code in focused sprints, using `any` as a temporary measure.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.