Skip to content

Strict Type Coercion in DataContext #846

@jacobsimionato

Description

@jacobsimionato

Proposal: Strict Type Coercion in DataContext

Reason

The A2UI protocol defines standard coercion rules (e.g., null resolving to "" for strings). Without central enforcement, component authors must manually handle these edge cases, leading to bugs like [object Object] appearing in text labels.

Design

  1. Coercion Utils: Implement the coercion table from the renderer_guide.md in a shared utility.
  2. Context Integration: Update DataContext.resolveDynamicValue and resolveSignal to apply these rules.
  3. Primitive Safety:
    • String targets: Convert any non-string to localized string; map null/undefined to "".
    • Number targets: Parse strings; map null/undefined to 0.
    • Boolean targets: Map "true" (case-insensitive) and non-zero numbers to true.
  4. GenericBinder Alignment: Ensure the GenericBinder uses these coerced values when populating ResolvedProps.

Key Files

  • renderers/web_core/src/v0_9/rendering/data-context.ts
  • renderers/web_core/src/v0_9/rendering/generic-binder.ts

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    In Progress

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions