Von Zeit zu Zeit bekomme ich TSLint Fehler "Block ist leer". Dies geschieht z.B. wenn ich einen no-op Rückruf an eine Funktion:Warum melden TSLint und JSLint leere Blöcke?
doSomething(() => {});
Von dem, was ich lese, tut JSLint anscheinend die gleichen, aber das habe ich nicht überprüfen.
Ich finde diese Verwendungen vollständig gültig, also habe ich versucht, einen Grund zu finden, warum leere Blöcke überhaupt als schlecht angesehen werden. Aber das einzige, was ich finden kann (z. B. in this answer) sind Anweisungen zum Hinzufügen eines return;
, um den Fehler zu vermeiden. Das ist nicht was ich in jedem leeren Rückruf tun möchte.
Warum meldet TSLint oben leeren Block als Problem? Gibt es einen Grund, warum ich den Check nicht deaktivieren sollte?
Nie auch benutzt; nur laut denken: könnte es sein, dass die Zeiten, die TSLint beschwert, wenn es denkt, dass die Funktion _should_ einen Wert zurückgibt und Ihre No-Op-Funktion dies nicht tut? Sie könnten vielleicht eine explizite No-Op-Funktion definieren und einfach ihren Namen in dieser Art von Anruf übergeben. – TripeHound
@TripeHound Nein, TSLint beschwert sich, wenn ich einen expliziten Typ von '(() => void)' für den Callback spezifiziere. Bezüglich des Noop: Ich habe gerade herausgefunden, dass lodash bereits eins definiert: '_noop'.Dies ist bisher die sauberste Lösung ... – theDmi
Sie können die '{}' auch in Klammern einschließen, z. '() => ({})' verursacht nicht die Warnung "leerer Block" mit TSLint – danwellman