Table of Contents

Proxy Generation

The TypeScript proxy generator automatically creates strongly-typed client code for your commands, queries, and types — ensuring compile-time type safety between your backend and frontend without any manual synchronization.

Overview

The proxy generator analyzes your backend API at build time and generates:

  • TypeScript interfaces for all request and response types
  • Strongly-typed proxy classes for invoking commands and queries
  • TypeScript enums for all C# enum types referenced by your API
  • Full IntelliSense support in your IDE

Enum Generation

C# enums referenced by any command, query, or type are automatically discovered and generated as TypeScript enums. Member names are converted to camelCase.

C# source:

public enum ReadModelStatus
{
    Unknown = 0,
    Active = 1,
    Inactive = 2,
    Archived = 3
}

Generated TypeScript:

export enum ReadModelStatus {
    unknown = 0,
    active = 1,
    inactive = 2,
    archived = 3,
}

Flags Enums

Enums decorated with [Flags] receive special treatment: the generator uses a dedicated template that, in addition to the enum declaration, emits an allXxx constant combining every non-zero member with the bitwise OR operator. This constant is useful when you need to represent "all flags set" or build a full bitmask without repeating every member name by hand.

C# source:

[Flags]
public enum AnchorEdges
{
    None = 0,
    Top = 1 << 0,
    Right = 1 << 1,
    Bottom = 1 << 2,
    Left = 1 << 3,
}

Generated TypeScript:

export enum AnchorEdges {
    none = 0,
    top = 1,
    right = 2,
    bottom = 4,
    left = 8,
}

export const allAnchorEdges = AnchorEdges.top | AnchorEdges.right | AnchorEdges.bottom | AnchorEdges.left;

The allAnchorEdges constant excludes none (value 0) because a zero-valued member contributes nothing to a bitwise OR expression. The name follows the convention all<EnumName> and is exported alongside the enum.

Configuration

Configuration details for the proxy generator will be documented here.

Usage

Usage examples and best practices will be provided in this section.

See Also

  • Commands - Learn about command patterns
  • Queries - Learn about query patterns