# SparseAttrNode

Represents a sparse attribute (e.g. `class="foo ${bar}"`).

## Signatures

```ts
export declare class SparseAttrNode {
    readonly _tag: "sparse-attr";
    readonly name: string;
    readonly nodes: Array<AttrPartNode | TextNode>;
    constructor(name: string, nodes: Array<AttrPartNode | TextNode>);
}
```

## Why

Static and dynamic segments remain ordered under one native attribute target.

## Ownership and lifetime

The model owns its segment array; the renderer Scope owns the live updater.

## Constructor

Creates sparse attribute syntax.

## Property: _tag

Sparse-attribute discriminant.

## Property: _tag: Why

Selects ordered segment joining under attribute escaping.

## Property: _tag: Ownership and lifetime

Immutable AST metadata.

## Property: name

Native attribute name.

## Property: name: Why

Identifies the direct attribute target for one interpolation.

## Property: name: Ownership and lifetime

Retained string metadata.

## Property: nodes

Ordered literal and dynamic segments.

## Property: nodes: Why

Reconstructs one attribute value from its authored order.

## Property: nodes: Ownership and lifetime

Retained AST array; mounted parts own live inputs.

## Examples

```ts
import { SparseAttrNode } from "@typed/template/Template"

const node = new SparseAttrNode("title", [])
```
