TypeScript Types and Generics/Discriminated union pattern

Model variant objects with a shared discriminant field.

Section: Mapped and Conditional Types

Discriminated union pattern

typescript
typescript
type Success = { kind: "success"; data: string };
type Failure = { kind: "error"; message: string };
type Result = Success | Failure;
Explanation

Discriminated unions pair especially well with narrowing in control flow.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing Mapped and Conditional Types
Simple mapped type
Create a type by iterating over keys.
OpenIn sheettypescriptsame section
Conditional type
Choose a type based on another type relationship.
OpenIn sheettypescriptsame section
Infer a return type
Use `infer` inside a conditional type.
OpenIn sheettypescriptsame section
Generic identity function
Use a type parameter for reusable function typing.
OpenIn sheettypescript1 tag match
Use `keyof`
Get a union of property names from a type.
OpenIn sheettypescript1 tag match
Use `Partial<T>`
Make every property optional.
OpenIn sheettypescript1 tag match