TypeScriptのRecord型を深く理解する
- 876単語
- 4分
- 30 Jul, 2024
TypeScriptでは、Record
は非常に便利な組み込みのジェネリック型で、オブジェクトのキーと値の型を定義することができます。Record
型を使用することで、キーと値の型に対して強い型サポートを提供し、キーと値のペアのデータ構造を扱う際に非常に役立ちます。本記事では、Record
型の定義、用途、そして実際の使用例について詳しく説明します。
Record型の定義
Record
型はTypeScriptが提供するジェネリック型で、2つの型引数を取ります:
1Record<Keys, Type>;
Keys
:オブジェクトのキーの型で、通常は文字列、数字、またはユニオン型です。Type
:オブジェクトの値の型です。
Record
の役割は、オブジェクトのすべてのキーを特定の値型にマッピングすることです。例えば、オブジェクトのすべてのキーが文字列型で、値が数字型であることを望む場合、Record<string, number>
を使用します。
使用シーン
Record
型は次のようなシーンで特に便利です:
- オブジェクトのキーと値のペアデータ構造の管理:キーと値の型に対して厳格な要件がある場合、
Record
は非常に有用です。 - インデックスシグネチャの代替:インデックスシグネチャとは異なり、
Record
はキー型と値型の制御をより正確に行うことができます。 - 辞書データ構造の使用:
Record
を使用して固定されたキーを持つ辞書構造を表現することができます。
コード例
基本的な使い方
以下の例は、キーが文字列で、値が数字であるオブジェクトを定義する方法を示しています:
1type Scores = Record<string, number>;2
3const studentScores: Scores = {4 Alice: 85,5 Bob: 92,6 Charlie: 78,7};8
9console.log(studentScores);10// 出力: { Alice: 85, Bob: 92, Charlie: 78 }
この例では、studentScores
オブジェクトのすべてのキーが文字列型で、値が数字型です。
ユニオン型をキーとして使用
ユニオン型を使用してオブジェクトのキーを制限することもできます。例えば、オブジェクトのキーが特定の文字列である必要がある場合は、次のように定義します:
1type Role = "admin" | "user" | "guest";2
3type RolePermissions = Record<Role, string[]>;4
5const permissions: RolePermissions = {6 admin: ["create", "edit", "delete"],7 user: ["view", "edit"],8 guest: ["view"],9};10
11console.log(permissions);12// 出力: { admin: ['create', 'edit', 'delete'], user: ['view', 'edit'], guest: ['view'] }
この例では、RolePermissions
型により、permissions
オブジェクトのキーが 'admin'
、'user'
、または 'guest'
のいずれかであることが保証されます。
オプションプロパティとの組み合わせ
Record
とPartial
型を組み合わせることで、すべてのプロパティをオプションにすることができます:
1type PersonInfo = {2 name: string;3 age: number;4};5
6type PartialPersonInfo = Partial<Record<"Alice" | "Bob", PersonInfo>>;7
8const partialInfo: PartialPersonInfo = {9 Alice: { name: "Alice", age: 30 },10 // Bob の情報はオプション11};12
13console.log(partialInfo);14// 出力: { Alice: { name: 'Alice', age: 30 } }
この例では、Partial<Record<'Alice' | 'Bob', PersonInfo>>
がオブジェクト型を定義し、キーが 'Alice'
または 'Bob'
で、値が PersonInfo
型であることを保証しますが、すべてのプロパティがオプションとなります。
結論
TypeScriptのRecord
型は、オブジェクトのキーと値の型を正確に定義する必要があるシーンで、強力で柔軟なツールです。型定義が簡素化され、コードの可読性と安全性が向上します。Partial
、Pick
、Omit
などの他の型ツールと組み合わせることで、開発者は複雑なデータ構造を容易に処理し、コードの品質と保守性を大幅に向上させることができます。