Czy można utworzyć klasę ES6, która przypisuje wartość domyślną do właściwości, jeśli nie została przekazana w nowej metodzie?Klasy ES6 Wartość domyślna
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'});
Jeśli staram się robić to z tego kodu, kompilacja z babeljs, otrzymuję TypeError: nie można ustawić właściwość „C” z niezdefiniowane.
Może nie rozumiem, jak działają klasy w javascript.
Jeśli nie można odczytać właściwość 'C' z' undefined', oznacza to, że cokolwiek ma mieć właściwości 'C' ** **' undefined' jest. Co oznacza, że w twoim przypadku 'opcje' są niezdefiniowane. –
Ale tego właśnie chcę. Jeśli nie przekażę wartości c w opcjach, tworzy nowy obiekt z wartością domyślną dla c –
Twój kod jest OK, możesz go skopiować/wkleić [tutaj] (https://babeljs.io/repl/) i zobaczyć. – Engineer