RecipesChapter 6: String Template Literal Types

Using Template Literals as Discriminants

Recipe 6.6 from The TypeScript Cookbook

type Success = {
    state: "USER_SUCCESS";
    data: User;
} | {
    state: "ORDER_SUCCESS";
    data: Order;
};
Open in TypeScript Playground →