Obtenir les propriétés d'une classe à l'aide de Typescript
Est-il un moyen pour obtenir des propriétés des noms de classe en caractères d'imprimerie: dans l'exemple
Je voudrais à "décrire" la classe A ou de toute classe et obtenir un tableau de ses propriétés (peut-être de la population ?), est-il possible? Ou devrais-je instancier l'objet en premier?
class A {
private a1;
private a2;
/** Getters and Setters */
}
class Describer<E> {
toBeDescribed:E ;
describe(): Array<string> {
/**
* Do something with 'toBeDescribed'
*/
return ['a1', 'a2']; //<- Example
}
}
let describer = new Describer<A>();
let x= describer.describe();
/** x should be ['a1', 'a2'] */
source d'informationauteur mboullouz
Vous devez vous connecter pour publier un commentaire.
Ce Tapuscrit code
compile ce code JavaScript
C'est parce que les propriétés en JavaScript commencer extisting seulement après qu'ils ont une certaine valeur. Vous devez affecter les propriétés de la valeur.
il compile à
Encore, vous ne pouvez pas obtenir les propriétés de la simple classe (vous pouvez obtenir des méthodes de prototype). Vous devez créer une instance. Ensuite, vous obtenez les propriétés en appelant
Object.getOwnPropertyNames()
.Appliqué à votre exemple
Certaines réponses sont partiellement faux, et certains faits sont partiellement faux.
Répondre à votre question: Oui! Vous pouvez.
En Caractères D'Imprimerie
Génère les éléments suivants code en Javascript:
@Erik_Cupal dit, vous pourriez faire:
Mais c'est incomplète. Qu'advient-il si votre classe a un constructeur personnalisé? Vous avez besoin de faire un truc avec la Machine, car il ne compile pas. Vous devez assigner comme tout:
Une solution générale sera:
Pour une meilleure compréhension ce référence en fonction du contexte.
Juste pour le plaisir
Mise à jour: Si vous êtes en utilisant des constructeurs, cette fonctionnalité va se rompre.
Une autre solution, Vous pouvez simplement effectuer une itération sur les clés de l'objet comme ça, vous devez instancier l'objet premier: