Gibt es eine Möglichkeit, eine einzelne Zeile zu ignorieren, wie in jshint?
Ich habe versucht, // tslint ignore:line zu verwenden, aber das scheint nicht zu funktionieren.
leider haben wir so etwas noch nicht. Sie müssen die Leitung explizit aktivieren und deaktivieren.
Wie deaktiviert man eine Leitung?
https://github.com/palantir/tslint#tslint -rule-flags
Für alle, die hier eine Workaround-Lösung finden
/* tslint:disable */ - Disable all rules for the rest of the file
/* tslint:enable */ - Enable all rules for the rest of the file
z.B
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */
Wurde die Implementierung einer Funktion ähnlich der oben beschriebenen untersucht?
@patsissons welche Funktion genau? Derzeit ist es möglich, eine einzelne Zeile mit zwei Kommentaren zu aktivieren/deaktivieren.
die Funktion wäre weniger ausführliche Zeilendeaktivierung. ESLint
hat mehrere Methoden, um einzeilige Regeln zu deaktivieren.
Zum Beispiel,
// eslint-disable-next-line rule-name
var x; // eslint-disable-line rule1 rule2
Die Wrapping-Methode eignet sich hervorragend als Redundanz für komplexe Regeldeaktivierungen, aber Inline (oder Next-Line) neigt dazu, den Code weniger verschmutzt zu lassen (dies ist natürlich meine Meinung, aber wahrscheinlich nicht so unvernünftig).
Das ist laut:
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */
Das ist viel besser:
var x; // eslint-disable-line rule1 rule2
Oder auch nur:
var x; // tslint:disable
Die Tatsache, dass es ein Zeilenkommentar ist, würde bedeuten, dass es nur diese eine Zeile deaktivieren würde, denke ich.
Oder schlimmstenfalls:
var x; // tslint:disable-line
akzeptiere dafür PRs. Hier ist eine kürzlich erfolgte Änderung, die //
anstelle von /*
Kommentaren zum Deaktivieren erlaubte (zwei Kommentare sind jedoch immer noch erforderlich): https://github.com/palantir/tslint/pull/1134
Ich werde heute Abend versuchen, dazu zu kommen, wenn es nicht zu schwierig ist, hoffentlich heute Abend auch eine PR
👍 Folgen wir ESLint hier genau:
someCode(); // tslint:disable-line
// tslint:disable-next-line
someCode();
und
someCode(); // tslint:disable-line:rule1 rule2
// tslint:disable-next-line:rule1
someCode();
Genau das möchte ich erreichen :+1:
Obwohl ESLint aus Gründen der Übersichtlichkeit keine Doppelpunkte verwendet, ist ihr Stil wie folgt:
// eslint-disable-next-line rule1, rule2
someCode();
Ich gehe davon aus, dass Sie es vorziehen würden, den TSLint-Stil beizubehalten, den Sie oben angegeben haben (Doppelpunkte und keine Kommas-Trennungsregeln).
👍 Bleiben wir aus Gründen der Konsistenz beim TSLint-Stil
Ich habe dies jetzt funktioniert und ich gehe gerade durch einige Commit-Bereinigungen, bevor ich den PR erstelle. Die Strategie bestand darin, die Varianten -line
und -next-line
in ihre entsprechenden vollständig ausgedrückten Kommentarschalter umzuwandeln. Dies geschieht durch Verfolgen der Zeilenanfangsposition (für -line
Schalter) und Durchführen einer Vorausschau für das Ende der folgenden Zeile (für -next-line
Schalter). Diese scheinen recht gut zu funktionieren und haben minimale Nebenwirkungen, da sie einfach als Alias für das ausführlichere Format dienen.
Nur eine Anmerkung, bevor ich meine PR in Ordnung bringe, aufgrund der Funktionsweise des deaktivierten Intervallcodes können Sie so etwas nicht tun
// tslint:disable-next-line:quotemark variable-name
var AAAaA = 'test' // tslint:enable-line variable-name
Ich erwarte ehrlich gesagt nie, dass jemand so etwas tut, aber ich wollte es hier nur anmerken. Sie können immer noch so eine Standardverschachtelung durchführen
// tslint:disable
var AAAaA = 'test' // tslint:enable-line:quotemark
// tslint:enable-next-line:variable-name
var AAAaA = 'test'
// tslint:enable
Frage zur Umsetzung, funktioniert das?
/**
* this is a very long line and violate max-line-length. // tslint:disable-line:max-line-length
*/
Nein, die Switch-Kommentare werden nicht so geparst, sie müssen richtig formatiert sein. Ich glaube, in Ihrem Beispiel würden Sie den einzeiligen Deaktivierungskommentar außerhalb des mehrzeiligen Kommentars platzieren und das sollte wie erwartet funktionieren.
Danke für die Aufklärung, habs verstanden.
@lijunle Ich
keines der oben genannten funktioniert
sprichst du über Feature-Vorschläge oder bereits implementierte?
schwer zu folgen
@phil123456 https://github.com/palantir/tslint#rule -flags
// tslint:disable-next-line <optional rule identifier>
var foo = 123;
^Link ist hierher verschoben: https://github.com/palantir/tslint/blob/master/docs/usage/rule-flags/index.md
Blutige Hölle. Weder die Wörter "unterdrücken" noch "ignorieren" kommen in dieser Dokumentation vor. Ich kann nicht glauben, wie viel Googeln nötig war, um zu diesem Problem zu gelangen. Lesen Sie alles oben, nur um festzustellen, dass es sich um eine unterstützte, dokumentierte Funktion handelt, aber die entsprechenden Schlüsselwörter sind nicht in den Dokumenten enthalten, also ist es unmöglich zu Google. Müssen Sie das gesamte Repository klonen und dafür eine PR einreichen, oder gibt es eine schnellere Möglichkeit, Korrekturen für .md-Dateien vorzuschlagen?
@pbarranis kannst du damit ein neues Ticket als Feature Request
Sie können es übrigens auch in der gleichen Zeile tun:
console.log("poop"); // tslint:disable-line no-console
Zumindest ab [email protected].
Das funktioniert nicht mit Regeln wie ordered-imports
//@ts-ignore
https://palantir.github.io/tslint/rules/
//@ts-ignore
https://palantir.github.io/tslint/rules/
leider zeigt diese Seite nur, wie man dies verbietet. Es zeigt nicht, wie man es richtig verwendet, oder erklärt, wie viel tsLint ignoriert, wenn Sie es verwenden. Ich weiß nicht, warum es auf dieser Seite nicht erwähnt wird, die erklärt, wie man Regeln unterdrückt https://palantir.github.io/tslint/usage/rule-flags/
Und ich stimme dem obigen Kommentar zu, in dem gefragt wurde, WARUM auf dieser Seite die Wörter "unterdrücken" oder "ignorieren" nicht erwähnt werden, damit sie bei der Verwendung von Google leicht gefunden werden können.
FYI diese Seite sagt jetzt, dass TSLint dieses Jahr EOL ist: https://github.com/palantir/tslint#tslint -rule-flags
Ah, tslint wird irgendwann (noch) nicht mit eslint zusammengeführt, also ist das nett, nehme ich an.
Der Punkt ist, dass tslint
jetzt die Funktion "Nächste Zeile ignorieren" unterstützt.
Beispiel:
// tslint:disable-next-line
Oder
// tslint:disable-next-line:rule1 rule2 rule3
Weitere Details und Beispiele finden Sie unter https://palantir.github.io/tslint/usage/rule-flags/
🤖 Beep boop! 👉 TSLint ist veraltet 👈 und Sie sollten zu typescript-eslint wechseln ! 🤖
🔒 Dieses Problem wird gesperrt, um weitere unnötige Diskussionen zu vermeiden. Dankeschön! 👋
Hilfreichster Kommentar
Für alle, die hier eine Workaround-Lösung finden
z.B
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */