2016-01-25 3 views
0

J'utilise pour gérer un objet de configuration, par ex.Remplacer la logique getter pour une instance de Immutable.js

config.js

export default Immutable.fromJS({ 
    foo: 'FOO', 
    bar: { 
     // ... 
    } 
}); 

Je voudrais remplacer les fonctions getter de sorte que l'accès à une propriété undefined serait une erreur.

Comment est-ce que je fais cela étant donné que chaque méthode de setter de l'objet résultant créera une nouvelle instance de Immutable (en écrasant en effet n'importe quel patch de singe)?

+0

Vous pourriez essayer de le forcer? – Mathletics

+0

Ou, en traitant cela comme un problème XY, vous pouvez exporter un getter (au lieu de l'objet de configuration lui-même) qui renvoie l'erreur si la propriété n'est pas définie. – Mathletics

Répondre

0

Généralement, je ne veux pas qu'il lance une erreur, il suffit de gérer undefined sans causer le code de se casser fatalement. Pour lancer une erreur spécifique, j'utilise try/catch, mais cela est très inefficace.

Pour éviter la casse, je fais quelque chose comme ça.

Ma motivation ici est surtout que mon appel .get de unsdefined se fout vraiment très fort, et que l'initialisation correctement partout aide, mais n'attrape pas tous les cas de bord. Je veux juste les données ou indéfinies sans aucune casse. La vérification de type spécifique me permet de faire plus de travail plus tard si je veux qu'il fasse des changements. Cette version plus souple résout beaucoup plus de cas de bords (la plupart du type Iterable avec la propriété .get, et toutes les données sont finalement obtenues) qu'une vérification de type spécifique (qui ne vous sauve habituellement que lorsque vous essayez de mettre à jour le mauvais type etc). Donne-moi ce que je te demande ou dis-moi non. Ne pas exploser. Je crois que le soulignement fait quelque chose de similaire aussi.