Classes ES6 Valeur par défaut
Est-il possible de créer un ES6 classe, qui attribue une valeur par défaut pour un bien, si l'on n'est pas passé dans la nouvelle méthode?
class myClass {
constructor(options) {
this.a = typeof options.a !== 'undefined' ? options.a : 'default a value';
this.b = typeof options.b !== 'undefined' ? options.b : 'default b value';
this.c = typeof options.c !== 'undefined' ? options.c : 'default c value';
}
}
var myClassWithValue = new myClass({a:'a value', b: 'b value'});
Si j'essaie de le faire avec ce code, la compilation avec babeljs, j'obtiens une erreur TypeError: Impossible de définir la propriété " c " undefined.
Peut-être que je ne reçois pas comment faire fonctionner des classes en javascript.
source d'informationauteur Leonardo Alves
Vous devez vous connecter pour publier un commentaire.
Si vous comptez utiliser l'ES6, pourquoi ne pas utiliser tous ES6, c'est à dire les valeurs par défaut pour les paramètres et la déstructuration de cession
http://www.es6fiddle.net/ibxq6qcx/
edit: testé et confirmé pour exécuter sur https://babeljs.io/repl/
Objet.attribuer fonctionne pour moi comme bien
Je vous suggère les suivantes:
Cela signifie
options
est pas défini.Assurez-vous que le
options
objet existe, tout d'abord:Ou, nice et court:
J'ai juste posé une question similaire, et trouve cette question après j'ai trouvé une solution, j'ai donc pensé que je pourrais le poster ici.
Ma question est spécifique à l'ES6 et à l'aide de la déconstruction à la configuration des paramètres par défaut d'une classe. Il semble que la spécification ne permet pas directement de déconstruire les arguments, sauf si vous faites quelque chose de semblable à ce que @Jaromanda X fait.
Je voulais quelque chose de plus court et plus, et s'est terminé vers le haut en utilisant le modèle suivant:
ES6 Babel test
Compilé Babel ES5
Tout ce que nous faisons ici est la déconstruction de l'argument options, et nous nous occupons de l'indéfini de cas d'utilisation avec un ternaire.