Verwendung der optionalen Verkettung in Node.js 12

17

Die optionale Verkettung ( obj?.param1?.param2) scheint eine großartige Funktion zu sein, und ich wollte unbedingt, dass sie implementiert wird, und verschachtelte ifs, beliebige Funktionen und was nicht für eine so einfache Operation.

Aber es gibt ein Problem, es funktioniert nicht. Ich habe auf Knoten 12 aktualisiert und erhalte immer noch eine Fehlermeldung:

var dude = res?.param?.params[0]
SyntaxError: Unexpected token '.'

oder

var dude = res.param?.params[0]
SyntaxError: Unexpected token '.'

Was ist das Problem?

Muss ich eine Sprachkonfiguration ändern oder eine Bibliothek herunterladen, um diese Funktion zu aktivieren? Oder ist es einfach noch nicht raus?

almarc
quelle
2
Es ist in Stage 4. Node.js unterstützt dies noch nicht. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Sridhar
Ich habe nach 'nodejs null propagation' gesucht und diese Frage zunächst nicht gefunden. Hoffentlich verbessert dieser Kommentar die Suchbarkeit.
Casimir
Ich fürchte, ich kann nicht viel dagegen tun. Es gibt ein Tag dafür, aber es ist nicht mit Javascript verwandt und wird mehr Verwirrung stiften als Gutes tun.
Almarc

Antworten:

17

Die optionale Verkettung wird derzeit in Node.jsVersion 13 nicht unterstützt und wird ab Node.jsVersion 14 und den meisten Browsern beim Verschieben unterstützt Stage 4. Derzeit unterstützen nur wenige Plattformen dies. Die Liste der Plattformen, die optionale Verkettungen unterstützen, finden Sie unter dem angegebenen Link . Sie können optional mit --harmonyflag aktivieren .

Balaj Khan
quelle
10

Die Spezifikation für die optionale Verkettungsfunktion wurde am 22. Dezember 2019 auf Stufe 4 (Fertig) hochgestuft . Knoten 12 kam heraus, bevor die Spezifikation endgültig war - und Knoten 13 auch.

Laut node.green wird die optionale Verkettung ab Knoten 14 unterstützt, erfordert jedoch weiterhin das --harmonyFlag. (Dies scheint im Widerspruch zu Node's Beschreibung der --harmonyFlagge zu stehen - für die Versandfunktionen von V8 ist die Flagge nicht erforderlich - daher bin ich mir nicht sicher, was ich davon halten soll.) Ob es eine Flagge benötigt oder nicht, würde ich nicht tun. Ich erwarte das Feature erst mit der Veröffentlichung von Node 14 um April 2020 .

Wenn Sie heute mit optionaler Verkettung spielen möchten, verwenden Sie am besten TypeScript (das in Version 3.7 eine optionale Verkettung hinzugefügt hat ) oder einen Präprozessor wie Babel .

Joe White
quelle
10

Ich konnte nodejs v13.7.0 mit dem Flag --harmony verwenden.

Knoten --harmony myCode.js

Dinah

nicht definiert

nicht definiert

//myCode.js

const adventurer = {
  name: 'Alice',
  cat: {
    name: 'Dinah'
  }
};

const catName = adventurer.cat?.name;
console.log(catName);
// expected output: Dinah
const dogName = adventurer.dog?.name;
console.log(catName);
//expected output: undefined

console.log(adventurer.someNonExistentMethod?.())
//expected output: undefined
user3283069
quelle
0

Die optionale Verkettung wird mit Node.jsVersion 14 implementiert , die am 20.04.2020 veröffentlicht wird. Inzwischen können Sie Babelmit verwenden @babel/plugin-proposal-optional-chaining.

Chema
quelle