eslint Objektkürzelfehler mit übergebener Variable

Lesezeit: 3 Minuten

Ich habe die folgende Funktion, die ein select2-Plugin einrichtet, das Selects öffnen muss, wenn sie mehrere sind, aber geschlossen, wenn sie es nicht sind:

function setUpSelects($selects, closeOnSelect) {
  $selects.each((i, item) => {
    const $item = $(item);

    $item.select2({
      closeOnSelect: closeOnSelect,  // <-- error on this line
      minimumResultsForSearch: Infinity,
      placeholder: $item.data('placeholder') || $item.attr('placeholder'),
    });
  });
}

setUpSelects($('select:not([multiple])'), false);
setUpSelects($('select[multiple]'), true);

Wenn ich jedoch versuche, diesen Code auszuführen, gibt mir der Eslint-Checker einen Fehler (in der oben gezeigten Zeile) von:

error Shorthand der erwarteten Eigenschaft Objekt-Shorthand

Ich habe eine Suche durchgeführt und die Dokumentation gelesen, aber es zeigt nicht, wie Sie eine Variable verwenden sollen, und die nicht akzeptierte Antwort auf diese Frage scheint zu glauben, dass es sich um einen Fehler in eslint handelt (obwohl ich keine Beweise dafür gefunden habe). )

Gibt es eine Möglichkeit, dies zum Laufen zu bringen, oder sollte ich die Regel für diese Zeile einfach deaktivieren?

  • In ES6 können/sollten Sie verwenden {foobar} Anstatt von {foobar: foobar}.

    – georg

    4. Dezember 2017 um 14:28 Uhr

  • Haben Sie versucht, Objektkurzschreibweise wie z { closeOnSelect, minimumResultsForSearch: Infinity, ... }?

    – Sirko

    4. Dezember 2017 um 14:29 Uhr

  • Ah, ich wusste nicht, dass Sie das Argument einfach leer lassen können, wenn es dasselbe heißt – ich wollte gerade kommentieren, dass ich bemerkt habe, dass die Ininity-Variable funktioniert

    – Peter

    4. Dezember 2017 um 14:29 Uhr

  • Seltsam, jetzt hast du mir gesagt, dass diese Seite viel mehr Sinn macht: eslint.org/docs/rules/object-shorthand. Sie erklären es nicht sehr gut im ersten Beispiel

    – Peter

    4. Dezember 2017 um 14:34 Uhr

  • Ich gehe davon aus, dass Sie eine Art vorgefertigtes Regelwerk verwenden, das zu eslint passt (andernfalls wäre die Regel dort gewesen, weil Sie sie explizit festgelegt haben). Ich verwende den Airbnb-Leitfaden, der diese Regel ebenfalls verwendet, aber ihre Begründung ist im Allgemeinen hilfreicher als das, was Sie auf den Eslint-Seiten finden würden hier ist die beschreibung.

    – Apokryfos

    4. Dezember 2017 um 16:15 Uhr


Benutzer-Avatar
Carl Edwards

Ein Auszug von eslint zum Thema:

Require Object Literal Shorthand Syntax (object-shorthand) – Rule Details

Diese Regel erzwingt die Verwendung der Kurzschreibweise. Dies gilt für alle in Objektliteralen definierten Methoden (einschließlich Generatoren) und alle definierten Eigenschaften, bei denen der Schlüsselname mit dem Namen der zugewiesenen Variablen übereinstimmt.

Veränderung

closeOnSelect: closeOnSelect

zu einfach

closeOnSelect

Dies Regel überprüft diese Objektliteral-Kurzschrift Syntax verwendet wird, z {a, b} Anstatt von {a: a, b: b}. Die Regel ist konfigurierbar, siehe Optionen für mehr Details.

Obwohl diese Abkürzungssyntax bequem ist, möchten Sie in einigen Fällen ihre Verwendung vielleicht nicht erzwingen. Sie können die Überprüfung in Ihrer Konfiguration deaktivieren:

// .eslintrc.json

{
  "rules": {
    // Disables the rule. You can just remove it,
    // if it is not enabled by a parent config.
    "object-shorthand": 0
  }
}

Im Falle von TSLint es gibt eine andere Möglichkeit:

// tslint.json

{
  "rules": {
    // Disables the rule. You can just remove it,
    // if it is not enabled by a parent config.
    "object-literal-shorthand": false
  }
}

  • Nur ein Hinweis, dass Sie möglicherweise Ihren Webserver neu starten müssen, damit die aktualisierten ESLint-Einstellungen angewendet werden.

    – HyperionX

    26. Oktober 2020 um 6:01 Uhr

Will Objekt mit Schlüsseln definieren und kann keine verwenden. Versuche dies.

Schnittstellenkarte {
[key: string]: Zeichenkette | nicht definiert }

const HUMAN_MAP: Map = {
  draft: "Draft",
}

export const human = (str: string) => HUMAN_MAP[str] || str

1101050cookie-checkeslint Objektkürzelfehler mit übergebener Variable

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy