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?
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
}
}
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
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