2025-02

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.

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.

A guide to tsconfig.json

[2025-01-15] dev, typescript

I never felt confident about my tsconfig.json. To change that, I went through the official documentation, collected all common options, and documented them in this blog post:

  • This knowledge will enable you to write a tsconfig.json that is cleaner and that you’ll fully understand.

  • If you don’t have the time to read the post, you can jump to the summary at the end where I show the tsconfig.json that I use now – along with recommendations for adapting it to different use cases (npm package, app, etc.).

  • I also link to the tsconfig.json recommendations by several well-known TypeScript programmers. (I went through them when I researched this post.)

I’m curious what your experiences with tsconfig.json are: Do you agree with my choices?

ECMAScript feature: regular expression pattern modifiers

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

Traditionally, we could only apply regular expression flags such as i (for ignoring case) to all of a regular expression. The ECMAScript feature “Regular Expression Pattern Modifiers” (by Ron Buckton) enables us to apply them to only part of a regular expression. In this blog post we examine how they work and what their use cases are.

Regular expression pattern modifiers attributes reached stage 4 in October 2024 and will probably be part of ECMAScript 2025.

ECMAScript feature: import attributes

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

The ECMAScript feature “Import Attributes” (by Sven Sauleau, Daniel Ehrenberg, Myles Borins, Dan Clark and Nicolò Ribaudo) helps with importing artifacts other than JavaScript modules. In this blog post, we examine what that looks like and why it’s useful.

Import attributes reached stage 4 in October 2024 and will probably be part of ECMAScript 2025.

Node’s new built-in support for TypeScript

[2025-01-08] dev, javascript, typescript

Starting with v23.6.0, Node.js supports TypeScript without any flags. This blog post explains how it works and what to look out for.

WebAssembly as an ecosystem for programming languages

[2025-01-01] dev, webassembly

In this blog post, we look at how WebAssembly has become an ecosystem for many programming languages and what technologies enable that.