In this lesson, we're going to learn about conditional types, a powerful feature of TypeScript's type system. Conditional types let us express non-uniform type mappings, that is, type transformations that differ depending on a condition.
A conditional type describes a type relationship test and selects one of two possible types, depending on the outcome of that test. It always has the form
We're going to use a conditional type to implement a
NonNullish<T> helper type. This type is identical to the
NonNullable<T> helper type which is defined in the core type declaration files that ship with the TypeScript compiler. Step by step, we're going to resolve an application of the
NonNullish<T> type to understand how conditional types are being evaluated.