Corrigez automatiquement les erreurs TS lorsque des correctifs de code sont disponibles.
Pour la plupart des cas d'utilisation, vous devriez pouvoir utiliser ts-autofix
directement via npx
.
npx ts-autofix list
de la racine de votre projet TS répertoriera les correctifs disponibles.npx ts-autofix
tentera d'exécuter tous les correctifs disponibles. Si votre tsconfig n'est pas sur ./tsconfig.json
, vous devez ajouter arg --project <pathToTsConfig>
aux deux commandes.
Vous pouvez également filtrer les correctifs appliqués en utilisant les arguments --fixes
ou --errors
.
Argument | Description |
---|---|
--projet | Le chemin d'accès à votre fichier tsconfig. par exemple npx ts-autofix [list] --project foo/tsconfig.json |
-f --correctifs | Le nom d'un ou plusieurs correctifs TS à appliquer. Utilisez npx ts-autofix list pour rechercher les correctifs disponibles.par exemple, npx ts-autofix --fixes unusedIdentifier inferFromUsage |
-e --erreurs | Les codes d'erreur TypeScript pour lesquels rechercher des correctifs. par exemple npx ts-autofix --errors TS6133 7006 |
--tsCliArgs | Arguments CLI supplémentaires pour que tsc remplace les options du compilateur. Par exemple, si vous essayez d'augmenter la rigueur de votre projet, vous pouvez transmettre l'indicateur de compilateur supplémentaire que vous essayez d'appliquer. par exemple npx ts-autofix [list] --tsCliArgs "--noImplicitAny" |
Il est également possible d'utiliser ts-autofix
comme bibliothèque, ce qui vous donne plus de contrôle sur la façon dont il s'exécute et applique les correctifs.
par exemple
import { tsAutoFix } from `ts-autofix` ;
tsAutoFix ( {
tsConfigPath : "foo/tsconfig.json" ,
diagnosticsFilter : ( diag ) => diag . code === 6133 ,
} ) ;
L'entrée de tsAutoFix
est un objet de configuration de type 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 | Description |
---|---|
tsconfigPath | (obligatoire) Le chemin d'accès au tsconfig.json de votre projet. |
compilerOptionsOverrides | Remplacements facultatifs des compilerOptions dans votre tsconfig. |
diagnosticsFiltre | Un rappel facultatif pour filtrer les diagnostics/erreurs TypeScript pour lesquels tenter de trouver des correctifs. S’ils ne sont pas définis, tous les diagnostics sont utilisés. Renvoyez true pour inclure ce diagnostic. |
codeFixFilter | Un rappel facultatif pour filtrer les correctifs à appliquer. S’ils ne sont pas définis, tous les correctifs sont appliqués. Renvoyez true pour inclure ce correctif. |
prétraitementCodeChanges | Un rappel facultatif pour modifier les correctifs avant qu’ils ne soient appliqués. Cela peut renvoyer changes modifiées ou ignorer des modifications individuelles, mais ne peut pas modifier directement sourceFile ou diagnostic . |
Par exemple, vous pouvez utiliser preprocessCodeChanges
pour modifier les remplacements suggérés afin que les commentaires de ligne soient conservés lors de la suppression d'une variable.
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
} ) ;