J'essaie d'utiliser l'API suivante du package typescript-json-serializer.

export declare function deserialize<T>(json: object, type: new (...params: Array<any>) => T): T;

Un exemple de code fonctionnel simple pour cette utilisation de l'API est :

const result: MyClass = deserialize<MyClass>(json, MyClass);

Mon utilisation est un peu plus délicate. Au lieu de MyClass, j'aimerais avoir une classe générique, quelque chose comme MyClass<T>.

J'ai essayé ce qui suit, mais il ne parvient pas à compiler

const result: MyClass<T> = deserialize<MyClass<T>>(json, MyClass<T>);

L'erreur mentionnée est Value of type 'typeof MyClass' is not callable. Did you mean to include 'new'?

Aucune idée sur la façon de résoudre ça ?

Mises à jour : Dans mon dernier exemple, T est une vraie classe.

const result: MyClass<MyClass2> = deserialize<MyClass<MyClass2>>(json, MyClass<MyClass2>);
0
Omar BELKHODJA 7 oct. 2020 à 01:52

1 réponse

Meilleure réponse

Le paramètre générique du constructeur est impliqué par l'annotation T sur deserialize. La syntaxe correcte et sécurisée est :

deserialize<MyClass<T>>(json, MyClass);
0
concat 7 oct. 2020 à 00:56