Chapter 6. String Template Literal Types

In TypeScript’s type system, every value is also a type. We call them literal types, and in union with other literal types, you can define a type that is very clear about which values it can accept. Let’s take subsets of string as an example. You can define exactly which strings should be part of your set and rule out a ton of errors. The other end of the spectrum would be the entire set of strings again.

But what if there is something between? What if we can define types that check if certain string patterns are available, and let the rest be more flexible? String template literal types do exactly that. They allow us to define types where certain parts of a string are predefined; the rest is open and flexible for a variety of uses.

But even more, in conjunction with conditional types, it’s possible to split strings into bits and pieces and reuse the same bits for new types. This is an incredibly powerful tool, especially if you think about how much code in JavaScript relies on patterns within strings.

In this chapter, we look at a variety of use cases for string template literal types. From following simple string patterns to extracting parameters and types based on format strings, you will see the enabling power of parsing strings as types.

But we keep it real. Everything you see here comes from real-world examples. What you can accomplish with string template literal types seems endless. People push the usage of string template literal ...

Get TypeScript Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.