mit ECMAScript 6, kann ich schreiben:denaturiert, verschachteltes Objekt mit Standardeinstellung, einschließlich Knoten
const {
a = mandatory('a'),
b: {
c = mandatory('c'),
d = mandatory('d')
} = mandatory('b')
} = { a: 'a', b: { c: 'c', d: 'd' } }
console.log(a, b, c, d)
function mandatory (field) {
throw new Error(`Not giving you a ReferenceError today, but you must set a non-falsy value to "${field}"!`)
}
mandatory
ist eine Funktion, die „Standardwerte Syntax“ verwendet und soll einen „bekannten“ Fehler in Fall wirft eine Eigenschaft wird auf einen falschen Wert gesetzt.
Wenn ich den Code ausführen, bekomme ich eine ReferenceError: b is not defined
. Wenn ich d: 'd'
entferne, wirft es den Fehler plötzlich nicht mehr.
... = { a: 'a', b: { c: 'c' } }
Es wirft einen gewünschten Fehler:
Error: Not giving you a ReferenceError today, but you must set a non-falsy value "d"!
- Wie kann ich
b
definiert machen? - Wie kann ich
mandatory
aufrufen und meinen eigenen Fehler werfen, wenna.b
auf einen nicht-falsy Wert gesetzt ist?
* Wenn ich entfernen 'd:‚d' '* - von wo? Das ist nicht in dem Code, den du gepostet hast. – Pointy
Und Ihr Code, wie er ist, funktioniert gut für mich in Node 6.2.2. – Pointy
Sorry, repariere es. Ich habe '' 'd: 'd'' '' hinzugefügt. Der "ReferenceError" ist also nicht erwünscht, aber der "Error" ist erwünscht. – mitchkman