ホームページ  >  記事  >  ウェブフロントエンド  >  TypeScript での共用体型と配列の簡略化

TypeScript での共用体型と配列の簡略化

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-12 14:32:02739ブラウズ

Simplifying Union Types and Arrays in TypeScript

TypeScript を使用する場合、共用体型と、その型で取り得るすべての値を含む配列を定義する必要がある場合があります。一般的なアプローチは、次のように記述することです:

type Taste = 'しょうゆ' | 'みそ' | 'とんこつ';
const tastes = ['しょうゆ', 'みそ', 'とんこつ'];

一見すると、これで問題ないようです。ただし、ここには隠れた問題があります。オプションを変更または追加するたびに、テイスト ユニオン タイプとテイスト配列の両方を更新する必要があります。この作業の重複により間違いが発生する可能性があり、コードの保守がより面倒になります。

幸いなことに、冗長性を減らすことでこれを簡素化する方法があります。 TypeScript で as const アサーションと typeof を使用すると、共用体型と配列の両方の定義を 1 か所に統合​​できます。上記のコードをリファクタリングする方法は次のとおりです:

const tastes = ['しょうゆ', 'みそ', 'とんこつ'] as const;
type Taste = (typeof tastes)[number];

このアプローチにはいくつかの利点があります:

  1. 単一の真実の情報源:

    値のリストは、tastes 配列内で 1 回だけ定義します。テイスト タイプはこの配列から自動的に派生されるため、リストを更新する必要がある場合は、1 か所で行うだけで済みます。

  2. タイプ セーフティ:

    const として使用すると、TypeScript はテイスト配列を単なる文字列配列ではなくリテラル型のタプルとして扱います。これにより、テイスト タイプが正確に保たれ、テイストの値と一致することが保証されます。

  3. メンテナンスの改善:

    テイストの型は配列から生成されるため、型と実際の値が不一致になる心配はありません。これにより、バグの可能性が減り、コードの保守が容易になります。

使用例

これで、コード内で Taste タイプを使用するときは常に、Taste 配列内の値と一致することが保証されます。

function describeTaste(taste: Taste): string {
  switch (taste) {
    case 'しょうゆ':
      return 'Savory soy sauce flavor.';
    case 'みそ':
      return 'Rich miso flavor.';
    case 'とんこつ':
      return 'Creamy pork broth flavor.';
    default:
      return 'Unknown taste';
  }
}

const allTastes: Taste[] = tastes; // Safe, because they match the type!

このパターンはコードの可読性を向上させるだけでなく、特に同期を保つ必要がある複数の値を扱う場合にエラーが発生しにくくなります。

この戦略を採用すると、TypeScript コードをより保守しやすく、スケーラブルにすることができます。これは、大規模な値のセットを扱う場合、またはコードベースが時間の経過とともに増大する場合に特に便利です。

以上がTypeScript での共用体型と配列の簡略化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。