1. ホーム
  2. typescript

[解決済み] TypeScriptのハッシュマップ/辞書インターフェイス

2022-06-07 02:07:25

質問

私はTypeScriptを使うのが初めてで、hashmap/dictionaryインターフェイスを実装しようとしています。今のところ、私は

export interface IHash {
    [details: string] : string;
} 

この構文の意味を正確に理解するのに苦労しています。もし私が var x : IHash = {}; を使用する場合、どのようにデータを追加/アクセスするのでしょうか?

どのように解決するのですか?

通常のjsオブジェクトと同様です。

let myhash: IHash = {};   

myhash["somestring"] = "value"; //set

let value = myhash["somestring"]; //get

でやっていることは2つあります。 [indexer: string] : string

  • TypeScriptに、オブジェクトが任意の文字列ベースのキーを持つことができることを伝える。
  • すべてのキー項目に対して、値が文字列型でなければならないことを伝える。

明示的に型付けされたフィールドを持つ一般的な辞書を作成するためには [key: string]: any;

age は必ず number でなければならず、一方 name は文字列でなければなりません - 両方とも必須です。暗黙のフィールドはどのような型の値でも構いません。

代替案として Map クラスがあります。

let map = new Map<object, string>(); 

let key = new Object();

map.set(key, "value");
map.get(key); // return "value"

これにより、任意のオブジェクト インスタンス (数字/文字列だけでなく)をキーとして持つことができます。

比較的新しいものなので、古いシステムをターゲットにしている場合はポリフィルが必要になるかもしれませんが。