Conditional types

Conditional mapped types are an advanced feature introduced in TypeScript 2.8. Previously in this chapter, we learned that we could use the extends keyword to declare generic constraints. When we declare a generic constraint, we are using the extends keyword as a kind of operator that allows us to check if a generic type (T) is a subtype of a given type. For example, the following code snippet declares two interfaces named Animal and Dog:

interface Animal {    live(): void;}interface Dog extends Animal {    woof(): void;}

We then use the extends keyword as a conditional operator to generate a new type:

type Foo1 = Dog extends Animal ? number : string; // numbertype Bar1 = RegExp extends Dog ? number : string; // string

Conditional ...

Get Learning TypeScript 2.x - Second Edition 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.