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?


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 .


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 .


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.