2025-02

Mapped types in TypeScript

[2025-02-14] dev, typescript

A mapped type is a loop over keys that produces an object or tuple type and looks as follows:

{[PropKey in PropKeyUnion]: PropValue}

In this blog post, we examine how mapped types work and see examples of using them. Their most importing use cases are transforming objects and mapping tuples.

TypeScript: extracting parts of composite types via infer

[2025-02-10] dev, typescript

In this blog post, we explore how we can extract parts of composite types via the infer operator.

It helps if you are loosely familiar with conditional types. You can check out section “Conditional types” in “Tackling TypeScript” to read up on them.

TypeDoc: testing code examples in doc comments

[2025-02-09] dev, typescript

TypeDoc now lets us refer to parts of other files via {@includeCode}. In this blog post, I explain how that works and why it’s useful.

TypeScript: the satisfies operator

[2025-02-08] dev, typescript

TypeScript’s satisfies operator lets us check the type of a value (mostly) without influencing it. In this blog post, we examine how exactly it works and where it’s useful.

Read-only accessibility in TypeScript

[2025-02-06] dev, typescript

In this blog post, we look at how can make things “read-only” in TypeScript – mainly via the keyword readonly.

Tutorial: publishing ESM-based npm packages with TypeScript

[2025-02-04] dev, typescript

During the last two years, ESM support in TypeScript, Node.js and browsers has made a lot of progress. In this blog post, I explain my modern setup that is relatively simple – compared to what we had to do in the past:

2025-01

Computing with tuple types in TypeScript

[2025-01-29] dev, typescript

JavaScript’s Arrays are so flexible that TypeScript provides two different kinds of types for handling them:

  • Array types for arbitrary-length sequences of values that all have the same type – e.g.: Array<string>
  • Tuple types for fixed-length sequences of values where each one may have a different type – e.g.: [number, string, boolean]

In this blog post, we look at the latter – especially how to compute with tuples at the type level.

Template literal types in TypeScript: parsing during type checking and more

[2025-01-24] dev, typescript

In this blog post, we take a closer look at template literal types in TypeScript: While their syntax is similar to JavaScript’s template literals, they operate at the type level. Their use cases include:

  • Static syntax checking for string literals
  • Transforming the casing of property names (e.g. from hyphen case to camel case)
  • Concisely specifying large string literal union types

ECMAScript proposal: RegExp escaping

[2025-01-21] dev, javascript, es proposal

The ECMAScript proposal “RegExp escaping” (by Jordan Harband and Kevin Gibbons) specifies a function RegExp.escape() that, given a string text, creates an escaped version that matches text – if interpreted as a regular expression.

This proposal is currently at stage 3.

TypeScript enums: use cases and alternatives

[2025-01-19] dev, typescript

In this blog post, we take a closer look at TypeScript enums:

  • How do they work?
  • What are their use cases?
  • What are the alternatives if we don’t want to use them?

The blog post concludes with recommendations for what to use when.