Conditional types in TypeScript are types are created on the basis of a condition.
Structure
type nameOfType = aType extends anotherType ? TrueType : FalseType
What we are telling TypeScript is to create a new type called nameOfType
based on evaluating the expression of whether aType
is an extension or subset of anotherType
. If that is true, then nameOfType
becomes of type TrueType
. Otherwise, it becomes FalseType
.
Examples
type Vehicle = {
make: string,
model: string,
typeOfVehicle: string,
}
type Car = {make: string}
type CarMake = Vehicle extends Car ? string : null; //type CarMake = string;
If we were to replace the property in Car
with a property and data type that does not exist in Vehicle
, we would get null
:
type Vehicle = {
make: string,
model: string,
typeOfVehicle: string,
}
type Car = {year: number}
type CarMake = Vehicle extends Car ? string : null; //type CarMake = null;
We can also use conditional types with Generics:
type isBoolean<T> = T extends boolean ? true : false;
type isActive = boolean;
type userIsActive = isBoolean<isActive> //type userIsActive = true