Peter Kröner

Where we're going we don't need JavaScript - Programming with Type Annotations

Your type system is a programming language. Learn to encode business logic directly into your types and make entire classes of bugs impossible at runtime.

Where we're going we don't need JavaScript - Programming with Type Annotations
#1about 2 minutes

Viewing TypeScript type annotations as a language

TypeScript's type system can be treated as its own functional, set-based programming language.

#2about 2 minutes

Mapping JavaScript syntax to TypeScript type constructs

Learn how JavaScript concepts like variables, functions, and objects correspond to type aliases, generics, and object types.

#3about 2 minutes

Understanding the set-based nature of TypeScript types

All types are fundamentally sets or unions, which simplifies operations and eliminates the need for explicit loops.

#4about 2 minutes

Building a type-level function to filter union types

A practical example demonstrates how to create a generic type that uses conditionals to filter null from a union.

#5about 3 minutes

The motivation for programming with type annotations

Using type-level programming allows you to abstract and enforce core business logic, similar to how high-level languages abstract machine code.

#6about 2 minutes

Deriving concrete types from abstract business rules

Instead of writing types manually, define core business rules as abstract types and then derive all concrete implementation types from them.

#7about 4 minutes

A practical example of a type-safe message bus

The challenge of building a type-safe message bus for a browser extension is introduced as a use case for type-level programming.

#8about 5 minutes

Using generics and keyof to enforce message contracts

The `send` and `on` methods are made type-safe by using generics, the `keyof` operator, and indexed access types derived from a central payload map.

#9about 3 minutes

The benefits of deriving types from first principles

Deriving types from a central source of truth ensures consistency and provides type-level automation across your entire project.

#10about 4 minutes

Q&A on performance, interfaces, and advanced learning

The speaker answers audience questions about runtime performance, the difference between `type` and `interface`, and how to learn advanced TypeScript patterns.

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

Software Engineer

tree-IT GmbH
Bad Neustadt an der Saale, Germany

Remote
Intermediate
Senior

Angular Developer

Picnic Technologies B.V.
Amsterdam, Netherlands

Intermediate
Senior

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.