[解決済み】TypescriptでDictionaryを宣言し、初期化する。
2022-03-26 03:17:01
質問
次のようなコードがあるとします。
interface IPerson {
firstName: string;
lastName: string;
}
var persons: { [id: string]: IPerson; } = {
"p1": { firstName: "F1", lastName: "L1" },
"p2": { firstName: "F2" }
};
なぜ初期化が拒否されないのか?結局、2番目のオブジェクトは "lastName"プロパティを持っていないのです。
どのように解決するのですか?
編集 : その後、最新のTSバージョンで修正されました。OPの投稿に対する@Simon_Weaverさんのコメントを引用します。
<ブロッククオート
注:これはその後修正されました(どの正確なTSバージョンかは不明です)。I
VSでこのようなエラーが発生するのは予想通りです。
Index signatures are
incompatible. Type '{ firstName: string; }' is not assignable to type
'IPerson'. Property 'lastName' is missing in type '{ firstName:
string; }'.
どうやら、宣言時に初期データを渡すとうまくいかないようです。 これはTypeScriptのバグだと思うので、プロジェクトサイトに上げてみてください。
というように、宣言と初期化で例を分けることで、型付き辞書を活用することができます。
var persons: { [id: string] : IPerson; } = {};
persons["p1"] = { firstName: "F1", lastName: "L1" };
persons["p2"] = { firstName: "F2" }; // will result in an error
関連
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] 辞書から要素を削除する
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み] JSONオブジェクトをTypeScriptのクラスにキャストする方法を教えてください。
-
[解決済み】辞書テキストファイル【終了しました
-
[解決済み] 範囲ループ内で選択されたキーをmapから削除しても安全ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swiftで辞書を繰り返し使用する
-
[解決済み] interface{}をmapに変換する方法
-
[解決済み] Goでマップにキーが含まれているかどうかを確認するには?
-
[解決済み】TypescriptでDictionaryを宣言し、初期化する。
-
[解決済み] Pythonでリストからキーと空の値でdictを初期化する方法は?
-
[解決済み】辞書テキストファイル【終了しました
-
[解決済み】地図と辞書の違いは何ですか?
-
[解決済み] GroovyでMapをループスルーする?
-
[解決済み] 範囲ループ内で選択されたキーをmapから削除しても安全ですか?
-
[解決済み] Clojureでマップの値に関数をマッピングする