# SparsePartNode

Represents a "sparse" part, which is a text or attribute value composed of
mix of static text and dynamic parts (e.g. `id="prefix-${id}"`).

## Signatures

```ts
export type SparsePartNode = SparseAttrNode | SparseClassNameNode | SparseCommentNode | SparseTextNode;
```

## Why

Sparse syntax preserves literal segments while still giving every dynamic
value context-specific update and escaping semantics.

## Ownership and lifetime

The AST values own no reactive producer; render Scopes own evaluation.

## Examples

```ts
import { SparseTextNode, type SparsePartNode } from "@typed/template/Template"

const part: SparsePartNode = new SparseTextNode([])
```
