オブジェクトのプロパティを反復処理する際の TypeScript の問題

オブジェクトのプロパティを反復処理する際の TypeScript の問題

1. 問題

たとえば、次のコード:

タイプ 動物 = {
    名前: 文字列;
    年齢: 番号
}

定数動物:動物={
    名前:"犬",
    年齢:12
}

関数テスト(obj:Animal) {
    (let k in obj) {
        console.log(obj[k]) を実行します。 //ここでエラー}
}
テスト(動物)

エラー:

2. 解決策

1. オブジェクトをanyとして宣言する

関数テスト(obj:Animal) {
    (let k in obj) {
        console.log((obj as any)[k]) //エラーなし}
}


この方法はtypescript検証メカニズムを直接バイパスします

2. オブジェクトのインターフェースを宣言する

タイプ 動物 = {
    名前: 文字列;
    年齢: 番号;
    [キー: 文字列]: 任意
}

定数動物:動物={
    名前:"犬",
    年齢:12
}

関数テスト(obj:Animal) {
    (let k in obj) {
        console.log(obj [k]) //エラーなし}
}
テスト(動物)

これは、より一般的なオブジェクト タイプ、特に一部のツール メソッドに使用できます。

3. ジェネリックを使用する

関数テスト<T extends object>(obj:T) {
    (let k in obj) {
        console.log(obj [k]) //エラーなし}
}

4. keyofを使用する

関数テスト(obj:Animal) {
    k: (動物のキー)とします。
    (k in obj) {
        console.log(obj [k]) //エラーなし}
}

これで、TypeScript によるオブジェクト プロパティのトラバースに関するこの記事は終了です。TypeScript によるオブジェクト プロパティのトラバースの詳細については、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • TypeScript 列挙の基本と例
  • TypeScript の条件型に関する詳細な読書と実践記録
  • Typescript+React でモバイルと PC でシンプルなドラッグ アンド ドロップ効果を実現

<<:  ウェブページを作成する際に注意すべき点

>>:  テーブル設定の背景画像が100%表示されない解決策

ブログ    

推薦する

WeChatアプレットでQRコードを識別するために長押しする実装プロセス

序文公式アカウントのQRコードは長押しで認識できることは皆さんご存じですが、ミニプログラムに対する制...

Vue コンポーネント (Vuex を含む) 間の値の転送に関する簡単な説明

目次父から息子へ:息子から父へ: Vuex を使用せずにコンポーネント間で値を渡す方法は、親から子、...

HTMLページにビデオを挿入する方法の概要

ページでビデオ タグを使用する場合は、Ogg Theora または VP8 (これに問題がない場合)...

Linux で同じバージョンの R を使用して Seurat2 と Seurat3 を同時にインストールするチュートリアル

Seurat は、単一細胞解析用の重量級の R パッケージです。使用したことがある人なら誰でも、その...

MySQL データベースのパフォーマンス最適化の概要

目次なぜ最適化するのですか? ?どこから始めますか? ?解決策は何ですか? ? ?どうやって選ぶ? ...

jQueryはショッピングカートの完全な機能を実現します

この記事では、ショッピングカートの完全な機能を実現するためのjQueryの具体的なコードを参考までに...

htmlダウンロード機能の詳しい説明

新しいプロジェクトは基本的に終了しました。フロントエンドとバックエンドを分離して統合を完了したのは初...

Linux での rpm、yum、ソースコードの 3 つのインストール方法の詳細な紹介

第1章 ソースコードのインストールRPM パッケージは特定のシステムとプラットフォームに応じて指定さ...

MySQLワームレプリケーションの基本知識

ワームは、その名前が示すように、自ら複製し、その数は倍増、つまり指数関数的に増加します。 MySQL...

Zookeeperスタンドアロン環境とクラスタ環境の構築

1. 単一マシン環境の構築# 1.1 ダウンロードZookeeper の対応するバージョンをダウンロ...

Ubuntu での CUDA と CUDNN のインストールとアンインストールの実装

目次序文グラフィックドライバーをインストールするCUDAをアンインストールするCUDAをインストール...

Bash の山括弧の深い理解 (初心者向け)

序文Bash には、ls、cd、mv などの重要な組み込みコマンドが多数あるほか、grep、awk、...

メニューのホバー効果を実現するCSS3

結果: html <nav id="nav-1"> <a cl...