A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Errors/Bad_optional_template below:

SyntaxError: Getaggte Vorlage kann nicht mit optionaler Verkettung verwendet werden - JavaScript

Es gibt zwei Möglichkeiten, diesen Fehler zu erhalten. Die erste Möglichkeit ist, wenn der Ausdruck des Tags eine Ausdruck der optionalen Verkettung ist, wie hier:

String?.raw`Hello, world!`;
console.log?.()`Hello, world!`;
Number?.[parseMethod]`Hello, world!`;

Die zweite Möglichkeit ist, wenn ?. zwischen dem Tag und der Vorlage auftritt, wie hier:

String.raw?.`Hello, world!`;

Optionale Verkettung im Tag ist speziell verboten, da es keinen klaren Anwendungsfall dafür gibt und unklar ist, was das erwartete Ergebnis sein soll (soll es undefined sein oder der Wert der Vorlage so, als wäre sie nicht getaggt?). Sie müssen die optionale Verkettung in ihre zugrunde liegende Bedingung übersetzen (siehe optionale Verkettung für weitere Informationen).

const result =
  String.raw === null || String.raw === undefined
    ? undefined
    : String.raw`Hello, world!`;

Denken Sie daran, dass die optionale Verkettung nur innerhalb einer geklammerten Einheit abgebrochen wird. Wenn Sie Ihren Ausdruck des Tags klammern, führt die optionale Verkettung nicht zu einem Fehler, da der Tag nun nicht abgebrochen wird und das Ergebnis klar ist (der Tag produziert undefined und führt dann zu einem Fehler in der getaggten Vorlage).

(console?.log)`Hello, world!`; // Throws if console?.log is undefined

Dies ist jedoch etwas unsinnig, da die optionale Verkettung Fehler innerhalb der Eigenschaftszugriffskette verhindert, aber dann garantiert einen Fehler beim Aufrufen des Vorlagen-Tags erzeugt. Wahrscheinlich möchten Sie trotzdem einen bedingten Check verwenden.

Beachten Sie, dass die optionale Verkettung nur als Ausdruck des Tags verboten ist. Sie können die optionale Verkettung innerhalb der eingebetteten Ausdrücke verwenden oder die optionale Verkettung auf den gesamten Ausdruck der getaggten Vorlage anwenden.

console.log`Hello, ${true.constructor?.name}!`; // ['Hello, ', '!', raw: Array(2)] 'Boolean'
console.log`Hello`?.toString(); // undefined

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4