オブジェクトのプロパティを反復処理する際の 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%表示されない解決策

推薦する

Vueのハッシュジャンプ原理の詳細な説明

目次ハッシュと履歴の違いハッシュ履歴getCurrentLocation の実装setupListe...

Windows Server 2016 に Docker をインストールするプロセスと発生した問題

前提条件Windows Server でコンテナーを実行するには、Windows Server (半...

Docker を使用して Microsoft Sql Server を展開するための詳細な手順

目次1 背景2 コンテナを作成する3 SAパスワードを変更する4 mssql のリンク5. コンテナ...

MySQL移行計画と落とし穴の実践記録

目次背景解決策1: 古いデータをバックアップするオプション2: テーブルを分割する解決策3: tid...

CSS を使用して画像の色を変更する 100 の方法 (収集する価値あり)

序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...

Nginx Linux のインストールと展開の詳細なチュートリアル

1. Nginx の紹介Nginxは負荷分散やリバースプロキシにも使えるWebサーバーです。現在最も...

HBuilderX で Tomcat 外部サーバーを設定して、JSP インターフェイスを表示および編集する方法の詳細な説明

1. 最初の方法は、ローカルのTomcatを起動してJSPを表示することです。 tomcatのweb...

Springboot および Vue プロジェクトの Docker デプロイメントの実装手順

目次A. SpringbootプロジェクトのDockerデプロイメント1. Springbootプロ...

CSS における px、rem、em、vh、vw の違いを簡単に分析します

絶対長さピクセルpx はピクセル値であり、メートルやセンチメートルのような固定の長さです。相対的な長...

vagrant+virtualBoxで仮想マシンを構築する方法

1. はじめにVagrant は、仮想マシン (VirtualBox) を構築および管理するためのツ...

Tomcatc3p0 で jnid データ ソースを構成する 2 つの実装方法の分析

c3p0の使用c3p0jarパッケージをインポートする <!-- https://mvnrep...

MySQL/MariaDB で完全な Unicode をサポートする方法

目次utf8mb4 の紹介UTF8 バイト数超過エラーutf8mb4 サポートデフォルトの文字エンコ...

NavicatがLinuxサーバー上のMySQLに接続できない問題を解決する

最初は悲しい気持ちになりました。スクリーンショットは以下の通りです。 少し苦労しましたが、解決策は次...

Linux における nohup と & の使い方と違いの詳細な説明

例:例として、Python コード loop_hello.py を使用します。このコードは、ループ回...

MySQL でグループ化した後、各グループの最大値を取得する詳細な例

MySQL でグループ化した後、各グループの最大値を取得する詳細な例1. テストデータベーステーブル...