0Pricing
TypeScript Academy · レッスン

satisfiesの実践的なパターン

設定オブジェクトや検索テーブルにsatisfiesを適用します。

「satisfiesの実践的なパターン」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。

カラーパレットの検証

パレットでは、satisfies Record<string, Color> を使うのが一般的なパターンです。すべての値が有効な色かチェックされる一方、キーは自動補完のために正確なまま保持されます。

type Color = "red" | "green" | "blue";
const palette = {
  primary: "blue",
  secondary: "green"
} satisfies Record<string, Color>;
console.log(palette.primary);

無効なパレット値の検出

値が有効な Color でない場合、satisfies はエラーを報告します。その一方で、キーは正確な型のまま保持されます。

type Color = "red" | "green" | "blue";
// const bad = { primary: "purple" } satisfies Record<string, Color>; // Error
const ok = { primary: "red" } satisfies Record<string, Color>;
console.log(ok.primary);

キーの自動補完を維持する

推論されるキーが "primary" | "secondary" であるため、エディターで自動補完できます。特定のキーが失われる通常の Record アノテーションとは異なります。

type Color = "red" | "green" | "blue";
const palette = { primary: "red", accent: "blue" } satisfies Record<string, Color>;
// palette.<autocomplete: primary, accent>
console.log(palette.accent);

ルートマップの検証

ルートマップにもメリットがあります。値はハンドラーの形状に一致する必要があり、ルート名はナビゲーションヘルパー用に既知のまま保持されます。

type Route = { method: "GET" | "POST"; path: string };
const routes = {
  home: { method: "GET", path: "/" },
  login: { method: "POST", path: "/login" }
} satisfies Record<string, Route>;
console.log(routes.login.method);

マップへのインデックスアクセス

キーが保持されるため、有効なルート名の型を作成し、型安全にマップへインデックスアクセスできます。

type Route = { method: string; path: string };
const routes = {
  home: { method: "GET", path: "/" },
  about: { method: "GET", path: "/about" }
} satisfies Record<string, Route>;
type RouteName = keyof typeof routes; // "home" | "about"
const pick: RouteName = "about";
console.log(routes[pick].path);

異なる値を持つ型付きconfig

値の形状がそれぞれ異なる場合にも satisfies は機能します。共用体型で制約すると、各値がその共用体に対して検証されます。

type Setting = number | boolean | string;
const config = {
  retries: 3,
  verbose: true,
  region: "eu"
} satisfies Record<string, Setting>;
console.log(config.retries, config.verbose);

列挙型のようなルックアップテーブル

値の型に対して検証しながら、後で使用するために各エントリを正確に保持するルックアップテーブルを作成できます。

type Status = "active" | "inactive";
const userStatus = {
  alice: "active",
  bob: "inactive"
} satisfies Record<string, Status>;
const s: "active" = userStatus.alice;
console.log(s);

as const との組み合わせ

as const と satisfies を組み合わせると、深く不変で検証済みのデータを作成できます。as const がデータを固定し、satisfies が検証します。

type Color = "red" | "blue";
const theme = {
  primary: "red",
  secondary: "blue"
} as const satisfies Record<string, Color>;
console.log(theme.primary);

型による数値範囲の検証

値を数値リテラルの共用体に制約して、固定された選択肢の集合をモデル化できます。値は定義時に検証されます。

type Level = 1 | 2 | 3;
const levels = {
  easy: 1,
  medium: 2,
  hard: 3
} satisfies Record<string, Level>;
console.log(levels.hard);

機能フラグのマップ

実用的な機能フラグ設定では、キーは自動補完できるフラグ名になり、値は satisfies によって検証されるブール値になります。

const flags = {
  newDashboard: true,
  betaSearch: false
} satisfies Record<string, boolean>;
type Flag = keyof typeof flags;
const f: Flag = "betaSearch";
console.log(flags[f]);

このパターンが優れている理由

パレット、ルート、フラグのいずれでも、satisfies Record<...> は検証済みの値と正確なキーおよびリテラルを提供します。型付き設定における日常的な最適解です。

type Color = "red" | "green" | "blue";
const ui = { brand: "green", warn: "red" } satisfies Record<string, Color>;
console.log(Object.keys(ui).join(","));

理解度チェック:実践的な satisfies

実践的な satisfies パターンを理解できているか確認しましょう。

まとめ:実践的な satisfies パターン

パレット、ルートマップ、フラグ、ルックアップテーブルに satisfies Record<string, Color> を適用し、すべての値を検証しながら、正確なキーとリテラルを自動補完用に保持する方法を学びました。

type Color = "red" | "blue";
const theme = { bg: "blue", fg: "red" } satisfies Record<string, Color>;
console.log(theme.bg, theme.fg);

よくある質問

「satisfiesの実践的なパターン」レッスンは無料ですか?

はい。「satisfiesの実践的なパターン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「satisfiesの実践的なパターン」で何を学びますか?

設定オブジェクトや検索テーブルにsatisfiesを適用します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「satisfiesの実践的なパターン」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. satisfiesが存在する理由
  2. satisfiesと型注釈
  3. satisfiesとasアサーション
  4. satisfiesの実践的なパターン
← TypeScript Academyに戻る