結果の型の文字列値としてジェネリックのクラス名を使用するにはどうすればよいですか

ConstB

文字列値としてクラス名を含むオブジェクトのシリアル化された表現の型を作成しようとしています。

基本的に私はこのようなものを作ろうとしています:

interface Serialised<T> {
    className: nameof T; // error
    value: T;
}

もちろんnameof、TypeScriptにはありませんそのため、現在、基本的な型の説明を使用しており、後で型キャストを使用しています。

interface Serialised {
    className: string;
    value: object;
}

したがって、質問があります。具体的には、そのうちの3つです。

  1. どのクラスにも適用できる一般的なソリューションはありますか?
  2. いくつかの基本クラスの子孫に適用できる一般的なソリューションはありますか?
  3. 事前定義されたクラスのセットに適用できるソリューションはありますか?多分列挙型を介して?
Titian Cernicova-Dragomir

typescriptでクラスの名前を抽出する機能はありません。

私たちができる最善のことは、serailizableクラスにclassName、型クエリを使用して抽出できる名前付きの静的フィールド(または他の名前)が必要です

interface SerializableClass {
    new (...a:any[]): any;
    readonly className: string;
}
interface Serialised<T extends SerializableClass> {
    className: T['className']; // error
    value: InstanceType<T>;
}

class Ok { 
    static readonly className = "Ok"
}

let o: Serialised<typeof Ok> = {
    className: "Ok",
    value: new Ok()
}

let o2: Serialised<typeof Ok> = {
    className: "Okk", //err
    value: new Ok()
}

class Bad{}
let o3: Serialised<typeof Bad> //err Type 'typeof Bad' does not satisfy the constraint 'SerializableClass'.

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Swiftの新しい結果型でジェネリック型を適切に使用するにはどうすればよいですか?

分類Dev

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

分類Dev

クラスのジェネリック型パラメーターとして非配列と配列の両方を許可しながら、文字列配列をジェネリック配列型に変換するにはどうすればよいですか?

分類Dev

ジェネリックを使用して列挙型の値を取得するにはどうすればよいですか?

分類Dev

ジェネリッククラスの型名として文字列を指定すると、実行時にインスタンスを作成するにはどうすればよいですか。それが不可能な場合、別の方法はありますか?

分類Dev

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

分類Dev

抽出した文字列を既存の列挙型オブジェクト名として使用するにはどうすればよいですか?

分類Dev

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

分類Dev

タイプがワイルドカードの場合、ジェネリック結果をジェネリックパラメーターとして使用するにはどうすればよいですか?

分類Dev

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

分類Dev

文字列の値をオブジェクトの名前として使用するにはどうすればよいですか?

分類Dev

「生の型」を静的フィールド/戻り値の型として使用するときにジェネリックスの警告を回避するにはどうすればよいですか?

分類Dev

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

分類Dev

変数の文字列を使用してJavaScriptオブジェクトを作成し、クラス名を定義するにはどうすればよいですか?

分類Dev

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

分類Dev

ジェネリック型のクラスを取得して、同じジェネリック型で異なる配列を受け入れるにはどうすればよいですか?

分類Dev

このシナリオでジェネリックスと型制約を正しく使用するにはどうすればよいですか?

分類Dev

文字列値を使用してNSArray内のオブジェクトのインデックスを取得するにはどうすればよいですか?

分類Dev

Fn(T)+ '静的レジスタを'ジェネリック型引数Tの '静的として作成するにはどうすればよいですか?

分類Dev

ES6テンプレートリテラル構文とバックティックを使用して、「結果」オブジェクトの失敗配列の各エントリを表示するにはどうすればよいですか。

分類Dev

別のジェネリック基本クラスにC#ジェネリック型制約を追加するにはどうすればよいですか?

分類Dev

文字列の値をオブジェクト名として使用するにはどうすればよいですか?

分類Dev

定数ジェネリックを使用して文字列の固定サイズ配列を作成するにはどうすればよいですか?

分類Dev

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

分類Dev

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

分類Dev

JavaScriptで名前の文字列を使用してオブジェクトをパラメータとして渡すにはどうすればよいですか?

分類Dev

Java Generics:ジェネリック型クラスのクラス型を指定するにはどうすればよいですか?

分類Dev

ジェネリックを使用して特定のタイプのすべての値を抽出するにはどうすればよいですか?

分類Dev

クエリ結果の値を定数文字列に挿入するにはどうすればよいですか?

Related 関連記事

  1. 1

    Swiftの新しい結果型でジェネリック型を適切に使用するにはどうすればよいですか?

  2. 2

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

  3. 3

    クラスのジェネリック型パラメーターとして非配列と配列の両方を許可しながら、文字列配列をジェネリック配列型に変換するにはどうすればよいですか?

  4. 4

    ジェネリックを使用して列挙型の値を取得するにはどうすればよいですか?

  5. 5

    ジェネリッククラスの型名として文字列を指定すると、実行時にインスタンスを作成するにはどうすればよいですか。それが不可能な場合、別の方法はありますか?

  6. 6

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

  7. 7

    抽出した文字列を既存の列挙型オブジェクト名として使用するにはどうすればよいですか?

  8. 8

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

  9. 9

    タイプがワイルドカードの場合、ジェネリック結果をジェネリックパラメーターとして使用するにはどうすればよいですか?

  10. 10

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

  11. 11

    文字列の値をオブジェクトの名前として使用するにはどうすればよいですか?

  12. 12

    「生の型」を静的フィールド/戻り値の型として使用するときにジェネリックスの警告を回避するにはどうすればよいですか?

  13. 13

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

  14. 14

    変数の文字列を使用してJavaScriptオブジェクトを作成し、クラス名を定義するにはどうすればよいですか?

  15. 15

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

  16. 16

    ジェネリック型のクラスを取得して、同じジェネリック型で異なる配列を受け入れるにはどうすればよいですか?

  17. 17

    このシナリオでジェネリックスと型制約を正しく使用するにはどうすればよいですか?

  18. 18

    文字列値を使用してNSArray内のオブジェクトのインデックスを取得するにはどうすればよいですか?

  19. 19

    Fn(T)+ '静的レジスタを'ジェネリック型引数Tの '静的として作成するにはどうすればよいですか?

  20. 20

    ES6テンプレートリテラル構文とバックティックを使用して、「結果」オブジェクトの失敗配列の各エントリを表示するにはどうすればよいですか。

  21. 21

    別のジェネリック基本クラスにC#ジェネリック型制約を追加するにはどうすればよいですか?

  22. 22

    文字列の値をオブジェクト名として使用するにはどうすればよいですか?

  23. 23

    定数ジェネリックを使用して文字列の固定サイズ配列を作成するにはどうすればよいですか?

  24. 24

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

  25. 25

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

  26. 26

    JavaScriptで名前の文字列を使用してオブジェクトをパラメータとして渡すにはどうすればよいですか?

  27. 27

    Java Generics:ジェネリック型クラスのクラス型を指定するにはどうすればよいですか?

  28. 28

    ジェネリックを使用して特定のタイプのすべての値を抽出するにはどうすればよいですか?

  29. 29

    クエリ結果の値を定数文字列に挿入するにはどうすればよいですか?

ホットタグ

アーカイブ