インデックスシグネチャでキーの型と値の型を指定する
更新日:2024.01.05
作成日:2024.01.05
Copilotへの質問
TypeScriptで次のような型定義を作ろうとしています。どのように定義すればよいでしょうか。
- タイトルA、タイトルBは任意の文字列
- A.md、B.mdは、任意のMarkdownファイル名
==== { “タイトルA”: “A.md”, “タイトルB”: “B.md” }
Copilotの回答
なるほど、タイトルA、タイトルBは固定ではなく、任意の文字列になる可能性があるということですね。その場合は、インデックスシグネチャという機能を使って、キーの型と値の型を指定することができます。例えば、以下のように書くことができます。
// キーが任意の文字列で、値がMarkdownファイル名のオブジェクトの型
type MarkdownObject = {
[key: string]: string;
}
// 型の使用例
const obj: MarkdownObject = {
"タイトルA": "A.md",
"タイトルB": "B.md",
"タイトルC": "C.md",
}
インデックスシグネチャについては、の記事が詳しく説明しています。また、インデックスシグネチャを使ったオブジェクトの型定義の具体例は、の記事が参考になるかもしれません。インデックスシグネチャを使うことで、可変なキーを持つオブジェクトの型を定義することができます。
参考
https://typescript-jp.gitbook.io/deep-dive/type-system/index-signatures