テストデータガイド

as const satisfies で型安全なテストフィクスチャを定義する

テストのダミーデータは as const satisfies Type で型安全に定義します。discriminant のリテラル型が保持され、widening を防ぎます。

const waitingRequest = {
  kind: "Waiting",
  passengerId: "passenger-1" as PassengerId,
} as const satisfies Waiting;

// waitingRequest.kind は "Waiting" リテラル型(string ではない)

なぜ as const だけでは不十分か

as const だけではリテラル型は保持されますが、オブジェクトが期待する型と一致しているかは検証されません。satisfies Type を追加することで、コンパイル時に型互換性が保証され、かつリテラル型も維持されます。

// ❌ 型チェックなし — タイポが検出されない
const bad = {
  kind: "Waitng", // タイポが見逃される
  passengerId: "passenger-1" as PassengerId,
} as const;

// ✅ 型チェックあり + リテラル型保持
const good = {
  kind: "Waiting",
  passengerId: "passenger-1" as PassengerId,
} as const satisfies Waiting;

This site uses Just the Docs, a documentation theme for Jekyll.