TypeScriptでジェネリック型で型のリストをフィルタリングするにはどうすればよいですか?

マイク・リシュケ

候補のリストから特定のタイプのすべてのインスタンスを返す関数が必要です。これらはすべて、共通のスーパークラスから派生しています。

たとえば、私は次のように書くことができます。

class A {
    protected children: A[] = [];

    getChildrenOfType<T extends A>(): T[] {
        let result: T[] = [];
        for (let child of this.children) {
            if (child instanceof T)
                result.push(<T>child);
        }

        return result;
    }
}

例えば

class B: extends A {}
class C: extends B {}
class D: extends A {}

ただし、それはコンパイルされません。child instanceof T「「T」は型のみを指しますが、ここでは値として使用されています」と表示されます。ただし、具体的なクラス(Cなど)はそこで機能します。問題を引き起こすのは明らかにジェネリック型です。その場合に使用される正しい構成は何ですか?そのような一般的なフィルタリングを実装するために他に何か必要なものはありますか?

マーカス

このコードを使用できます。

class A {
    protected children: A[] = [];

    getChildrenOfType<T extends A>(t: new (...args: any[]) => T): T[] {
        let result: T[] = [];
        for (let child of this.children) {
            if (child instanceof t)
                result.push(<T>child);
        }

        return result;
    }
}

の右側instanceofはコンストラクター関数である必要がありますnew() => MyClassこれをメソッドのパラメーターとして指定できます。

このgetChildrenOfType方法は次のように使用できます。

var a = new A();
// push some childs to a.children
a.getChildrenOfType(B)

遊び場でそれをチェックしてください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Scalaでジェネリック型のデフォルト型クラスを提供するにはどうすればよいですか?

分類Dev

Typescriptジェネリック型を使用するインターフェイスを拡張するにはどうすればよいですか?

分類Dev

Scalaでジェネリック型のオブジェクト/シングルトンを作成するにはどうすればよいですか?

分類Dev

TypeScriptのジェネリック型の値に従ってフィールドを追加するにはどうすればよいですか?

分類Dev

Kotlinのリストにジェネリック型のインスタンスを追加するにはどうすればよいですか?

分類Dev

インターフェイスでオプションのジェネリック型を宣言するにはどうすればよいですか?

分類Dev

値タプルでジェネリック型を使用するにはどうすればよいですか?

分類Dev

ジェネリック型のインターフェースを実装するにはどうすればよいですか?

分類Dev

ジェネリック型のクラスを取得するにはどうすればよいですか?

分類Dev

ジェネリック型のgsonでカスタム逆シリアル化を使用するにはどうすればよいですか?

分類Dev

クラス<T>のオープンジェネリック型のリストを作成するにはどうすればよいですか?

分類Dev

この例では、同じインターフェイスから継承するさまざまなオブジェクトをジェネリック型で1つの変数に格納するにはどうすればよいですか?

分類Dev

ジェネリック型Tのクラスインスタンスを取得するにはどうすればよいですか?

分類Dev

Scalaでジェネリック型のランタイムクラスを取得するにはどうすればよいですか?

分類Dev

ネストされたジェネリック型の型を取得するにはどうすればよいですか

分類Dev

インターフェイスをC#ジェネリック型制約として使用するにはどうすればよいですか?

分類Dev

Typescriptでインターフェイスのサブセットとしてジェネリック型を入力するにはどうすればよいですか?

分類Dev

TypeScriptでジェネリック戻りクラスの戻り値の型を明示的に定義するにはどうすればよいですか?

分類Dev

Nimでデフォルトのジェネリック型を使用するにはどうすればよいですか?

分類Dev

デコレータを使用してクラスジェネリック型の実行時型を取得するにはどうすればよいですか?

分類Dev

ジェネリック型のインターフェイスとしてジェネリック型のクラスインスタンスを返すにはどうすればよいですか?

分類Dev

ジェネリック型のインターフェイスとしてジェネリック型のクラスインスタンスを返すにはどうすればよいですか?

分類Dev

Typescript:ジェネリック型がJSONのサブセットであることを確認するにはどうすればよいですか?

分類Dev

ジェネリック型パラメーターを使用して関数のベクトルを作成するにはどうすればよいですか?

分類Dev

ジェネリック型の匿名インスタンスを作成するにはどうすればよいですか?

分類Dev

ジェネリック型のインスタンスを作成するにはどうすればよいですか?

分類Dev

型ジェネリック関数ポインタを渡すにはどうすればよいですか?

分類Dev

Djangoジェネリックビューでテーブルをフィルタリングするにはどうすればよいですか?

分類Dev

Typescriptで複数のジェネリック型パラメーターに分散しないようにするにはどうすればよいですか?

Related 関連記事

  1. 1

    Scalaでジェネリック型のデフォルト型クラスを提供するにはどうすればよいですか?

  2. 2

    Typescriptジェネリック型を使用するインターフェイスを拡張するにはどうすればよいですか?

  3. 3

    Scalaでジェネリック型のオブジェクト/シングルトンを作成するにはどうすればよいですか?

  4. 4

    TypeScriptのジェネリック型の値に従ってフィールドを追加するにはどうすればよいですか?

  5. 5

    Kotlinのリストにジェネリック型のインスタンスを追加するにはどうすればよいですか?

  6. 6

    インターフェイスでオプションのジェネリック型を宣言するにはどうすればよいですか?

  7. 7

    値タプルでジェネリック型を使用するにはどうすればよいですか?

  8. 8

    ジェネリック型のインターフェースを実装するにはどうすればよいですか?

  9. 9

    ジェネリック型のクラスを取得するにはどうすればよいですか?

  10. 10

    ジェネリック型のgsonでカスタム逆シリアル化を使用するにはどうすればよいですか?

  11. 11

    クラス<T>のオープンジェネリック型のリストを作成するにはどうすればよいですか?

  12. 12

    この例では、同じインターフェイスから継承するさまざまなオブジェクトをジェネリック型で1つの変数に格納するにはどうすればよいですか?

  13. 13

    ジェネリック型Tのクラスインスタンスを取得するにはどうすればよいですか?

  14. 14

    Scalaでジェネリック型のランタイムクラスを取得するにはどうすればよいですか?

  15. 15

    ネストされたジェネリック型の型を取得するにはどうすればよいですか

  16. 16

    インターフェイスをC#ジェネリック型制約として使用するにはどうすればよいですか?

  17. 17

    Typescriptでインターフェイスのサブセットとしてジェネリック型を入力するにはどうすればよいですか?

  18. 18

    TypeScriptでジェネリック戻りクラスの戻り値の型を明示的に定義するにはどうすればよいですか?

  19. 19

    Nimでデフォルトのジェネリック型を使用するにはどうすればよいですか?

  20. 20

    デコレータを使用してクラスジェネリック型の実行時型を取得するにはどうすればよいですか?

  21. 21

    ジェネリック型のインターフェイスとしてジェネリック型のクラスインスタンスを返すにはどうすればよいですか?

  22. 22

    ジェネリック型のインターフェイスとしてジェネリック型のクラスインスタンスを返すにはどうすればよいですか?

  23. 23

    Typescript:ジェネリック型がJSONのサブセットであることを確認するにはどうすればよいですか?

  24. 24

    ジェネリック型パラメーターを使用して関数のベクトルを作成するにはどうすればよいですか?

  25. 25

    ジェネリック型の匿名インスタンスを作成するにはどうすればよいですか?

  26. 26

    ジェネリック型のインスタンスを作成するにはどうすればよいですか?

  27. 27

    型ジェネリック関数ポインタを渡すにはどうすればよいですか?

  28. 28

    Djangoジェネリックビューでテーブルをフィルタリングするにはどうすればよいですか?

  29. 29

    Typescriptで複数のジェネリック型パラメーターに分散しないようにするにはどうすればよいですか?

ホットタグ

アーカイブ