0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的アウトプットカレンダーAdvent Calendar 2024

Day 19

【TypeScript】インデックス型(index signature)の使い方

Posted at

今回は、TypeScriptのインデックス型について調べてみました。

インデックス型とは

インデックス型とは何でしょうか。

サバイバルTypeScriptでは下記の記述があります。

TypeScriptで、オブジェクトのフィールド名をあえて指定せず、プロパティのみを指定したい場合があります。そのときに使えるのがこのインデックス型(index signature)です。


下記のように定義されます。

type IndexSignatureType = {
  [key: KeyType]: ValueType;
}

KeyType はプロパティ名の型を表しており、stringnumbersymbol のみ指定可能です。
ValueType はプロパティの型を表しており、任意の型を指定可能です。


これにより、オブジェクトにおいてキーの名前が事前に決まっていない場合や、複数のプロパティが同じ型を持つ場合に、特定のキーの型や値の型を指定できます。

具体的な使用例

では、具体的にどのような場面で使用すればよいのでしょうか。
今回はAIに具体例を提示してもらいました。

①言語の翻訳データ

インデックス型を使用することで、特定の型に統一された多数のプロパティを持つオブジェクトを定義することができます。

下記は言語の翻訳データを作成する例です。
キーに言語コード、値に翻訳文字列を設定しています。

type Translation = {
  [key: string]: string;
};

const translations: Translation = {
  en: "Hello",
  ja: "こんにちは",
  es: "Hola",
  fr: "Bonjour",
};

console.log(translations["ja"]); // "こんにちは"

②APIレスポンスの型定義

動的なデータを扱う場合に役立ちます。

下記はAPIレスポンスの型を定義する例です。
プロパティの型をユニオン型で定義しています。

type APIResponse = {
  [key: string]: string | number | boolean;
};

const response: APIResponse = {
  status: "success",
  code: 200,
  isAuthenticated: true
};

おわりに

インデックス型を使用することで、柔軟にオブジェクトを設計でき、
安全性も担保できる点が強みかなと思います。

それでは。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?