2017-01-17 6 views
0

Je sais que les sous-classes Record n'acceptent pas les paires de valeurs clés du constructeur si le nom de la clé n'est pas défini à l'origine dans la sous-classe. Cependant, je veux être capable d'identifier quand une paire de clés non valide est passée dans le constructeur de mon enregistrement.Comment identifier quand les valeurs passées au constructeur d'une sous-classe Record sont invalides dans Immutable.JS?

Par exemple,

export default class MessageTester extends Record ({ 
    successStatus: null, 
    message: null, 
}) { 
    constructor(dataSet) { 
     /* Pseudo-code 
      * if (dataSet keys do not match MessageTester keys) { 
      *  console.log('Keys passed to constructor do not match.'); 
      */ 
      super(dataSet); 
    } 

} 

Je pensais à la récupération des clés à la fois le DataSet et le MessageTester et en les comparant, mais je suis venu avec une autre solution. Je voudrais tester les clés en récupérant les clés de la valeur dataSet. Je ne peux pas obtenir la méthode get pour que Records fonctionne à l'intérieur de la classe en utilisant le mot-clé this. Toutes les solutions à mon problème principal énumérées ci-dessus seraient formidables.

let dataSetKeys = Object.keys(dataSet); 
for (let i = 0; i < dataSetKeys.length; i++) { 
    if(this.get(dataSetKeys[i]) === undefined) 
     console.log('Invalid key found.'); 
} 
+0

Ok, j'ai trouvé le problème pour ce code. let dataSetKeys = Object.keys (jeu de données); pour (let i = 0; i

Répondre

0

Ok, donc j'ai au moins trouvé une solution pour l'extrait de code de bottm. J'aurais dû utiliser super istead de ceci puisque obtenir est un methond d'enregistrement ..... Désolé, erreur simple de ma part. Curieux cependant, y a-t-il une meilleure solution?

let dataSetKeys = Object.keys(dataSet); 
for (let i = 0; i < dataSetKeys.length; i++) { 
    if(super.get(dataSetKeys[i]) === undefined) 
     console.log('Invalid key found.'); 
} 
+0

Cela ne fonctionne pas puisque je n'ai pas encore appelé le super constructeur. Je viens de réaliser cela. –