|
refactor: типизация agent-слоя — снапшот без as unknown as
- Снапшот-типы (HeroSnapshot и пр.) — type alias'ы вместо interface: у alias'ов
есть неявная индексная подпись, поэтому они структурно совместимы с
JsonValue/SnapshotLayer без кастов.
- Фабрики слоёв (heroLayer/enemiesLayer/npcsLayer/dialogueLayer/lightingLayer/
collisionLayer) возвращают SnapshotLayer & { <ключ>: <тип> } — рассинхрон
слоя и типа теперь ошибка компиляции.
- SceneAgentView.agentSnapshot(): LocationSnapshot собирается из слоёв
напрямую и возвращается как есть (7 кастов убрано); GameAgent.waitFor
и invariants пользуются типизированным GameSnapshot (ещё 4).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
|---|
|
|
| apps/game/src/agent/GameAgent.ts |
|---|
| apps/game/src/agent/SceneAgentView.ts |
|---|
| apps/game/src/agent/__tests__/snapshot.test.ts |
|---|
| apps/game/src/agent/snapshot.ts |
|---|