TS-Fehler automatisch beheben, wenn Codefixes verfügbar sind.
Für die meisten Anwendungsfälle sollten Sie ts-autofix
direkt über npx
verwenden können.
npx ts-autofix list
im Stammverzeichnis Ihres TS-Projekts listet die verfügbaren Fixes auf.npx ts-autofix
wird versuchen, alle verfügbaren Fixes auszuführen. Wenn sich Ihre tsconfig nicht unter ./tsconfig.json
befindet, sollten Sie arg --project <pathToTsConfig>
zu beiden Befehlen hinzufügen.
Sie können auch filtern, welche Fixes angewendet werden, indem Sie die Argumente --fixes
oder --errors
verwenden.
Argument | Beschreibung |
---|---|
--Projekt | Der Pfad zu Ihrer tsconfig-Datei. zB npx ts-autofix [list] --project foo/tsconfig.json |
-F --fixes | Der Name eines oder mehrerer anzuwendender TS-Fixes. Verwenden Sie npx ts-autofix list um verfügbare Korrekturen zu finden.zB npx ts-autofix --fixes unusedIdentifier inferFromUsage |
-e --errors | Die TypeScript-Fehlercodes, für die nach Korrekturen gesucht werden soll. zB npx ts-autofix --errors TS6133 7006 |
--tsCliArgs | Zusätzliche CLI-Argumente für tsc zum Überschreiben von CompilerOptions. Wenn Sie beispielsweise versuchen, die Strenge Ihres Projekts zu erhöhen, übergeben Sie möglicherweise das zusätzliche Compiler-Flag, das Sie durchsetzen möchten. zB npx ts-autofix [list] --tsCliArgs "--noImplicitAny" |
Es ist auch möglich ts-autofix
als Bibliothek zu verwenden, wodurch Sie mehr Kontrolle darüber haben, wie es ausgeführt wird und Korrekturen anwendet.
z.B
import { tsAutoFix } from `ts-autofix` ;
tsAutoFix ( {
tsConfigPath : "foo/tsconfig.json" ,
diagnosticsFilter : ( diag ) => diag . code === 6133 ,
} ) ;
Die Eingabe für tsAutoFix
ist ein Konfigurationsobjekt vom Typ TsAutoFixOptions
.
type TsAutoFixOptions = {
tsconfigPath : string ;
compilerOptionsOverrides ?: ts . CompilerOptions ;
diagnosticsFilter ?: ( diagnostic : ts . Diagnostic ) => boolean ;
codeFixFilter ?: ( codeFixAction : ts . CodeFixAction ) => boolean ;
preprocessCodeChanges ?: ( changes : ts . TextChange [ ] , sourceFile : ts . SourceFile , diagnostic : ts . Diagnostic ) => ts . TextChange [ ] ;
} ;
Option | Beschreibung |
---|---|
tsconfigPath | (erforderlich) Der Pfad zur tsconfig.json Ihres Projekts. |
CompilerOptionsOverrides | Optionale Überschreibungen der CompilerOptions in Ihrer tsconfig. |
DiagnoseFilter | Ein optionaler Rückruf, um zu filtern, für welche TypeScript-Diagnosen/-Fehler nach Korrekturen gesucht werden soll. Wenn nicht definiert, werden alle Diagnosen verwendet. Geben Sie true zurück, um diese Diagnose einzuschließen. |
codeFixFilter | Ein optionaler Rückruf zum Filtern der anzuwendenden Korrekturen. Wenn nicht definiert, werden alle Korrekturen angewendet. Geben Sie true zurück, um diesen Fix einzuschließen. |
preprocessCodeChanges | Ein optionaler Rückruf zum Ändern von Fixes, bevor sie angewendet werden. Dadurch können geänderte changes zurückgegeben oder einzelne Änderungen übersprungen werden, sourceFile oder diagnostic können jedoch nicht direkt geändert werden. |
Sie könnten beispielsweise preprocessCodeChanges
verwenden, um die vorgeschlagenen Ersetzungen so zu ändern, dass Zeilenkommentare beim Entfernen einer Variablen erhalten bleiben.
import { tsAutoFix } from "ts-autofix" ;
import type * as ts from "typescript"
const preprocessCodeChanges = (
changes : ts . TextChange [ ] ,
sourceFile : ts . SourceFile ,
diagnostic : ts . Diagnostic
) : ts . TextChange [ ] => {
for ( const change of changes ) {
// If the change is purely a deletion
if ( ! change . newText ) {
let { start , length } = change . span ;
const removedText = sourceFile . text . substring ( start , start + length ) ;
// Skip leading line comments when removing code.
const match = removedText . match ( / ^(s*//.*r?n)+ / ) ;
if ( match ) {
change . span . start += match [ 0 ] . length ;
change . span . length -= match [ 0 ] . length ;
}
}
}
return changes ;
} ;
tsAutoFix ( {
tsConfigPath : "foo/tsconfig.json" ,
preprocessCodeChanges
} ) ;