Corrija erros de TS automaticamente quando correções de código estiverem disponíveis.
Para a maioria dos casos de uso, você poderá usar ts-autofix
diretamente por meio de npx
.
npx ts-autofix list
da raiz do seu projeto TS listará as correções disponíveis.npx ts-autofix
tentará executar todas as correções disponíveis. Se o seu tsconfig não estiver em ./tsconfig.json
, você deve adicionar arg --project <pathToTsConfig>
a ambos os comandos.
Você também pode filtrar quais correções são aplicadas usando os argumentos --fixes
ou --errors
.
Argumento | Descrição |
---|---|
--projeto | O caminho para o seu arquivo tsconfig. por exemplo, npx ts-autofix [list] --project foo/tsconfig.json |
-f --fixações | O nome de uma ou mais correções de TS a serem aplicadas. Use npx ts-autofix list para encontrar as correções disponíveis.por exemplo, npx ts-autofix --fixes unusedIdentifier inferFromUsage |
-e --erros | Os códigos de erro TypeScript para procurar soluções. por exemplo, npx ts-autofix --errors TS6133 7006 |
--tsCliArgs | Argumentos CLI adicionais para tsc substituir compilerOptions. por exemplo, se você estiver tentando aumentar o rigor do seu projeto, poderá passar o sinalizador adicional do compilador que está tentando aplicar. por exemplo, npx ts-autofix [list] --tsCliArgs "--noImplicitAny" |
Também é possível usar ts-autofix
como uma biblioteca, o que lhe dá mais controle sobre como ele é executado e aplica correções.
por exemplo
import { tsAutoFix } from `ts-autofix` ;
tsAutoFix ( {
tsConfigPath : "foo/tsconfig.json" ,
diagnosticsFilter : ( diag ) => diag . code === 6133 ,
} ) ;
A entrada para tsAutoFix
é um objeto de configuração do tipo 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 [ ] ;
} ;
Opção | Descrição |
---|---|
tsconfigPath | (obrigatório) O caminho para o tsconfig.json do seu projeto. |
compilerOptionsOverrides | Substituições opcionais para compilerOptions em seu tsconfig. |
filtro de diagnóstico | Um retorno de chamada opcional para filtrar quais diagnósticos/erros TypeScript tentar encontrar soluções. Se não for definido, todos os diagnósticos serão usados. Retorne true para incluir esse diagnóstico. |
codeFixFilter | Um retorno de chamada opcional para filtrar quais correções serão aplicadas. Se não for definido, todas as correções serão aplicadas. Retorne true para incluir essa correção. |
pré-processCodeChanges | Um retorno de chamada opcional para modificar correções antes de serem aplicadas. Isso pode retornar changes modificadas ou ignorar alterações individuais, mas não pode modificar sourceFile ou diagnostic diretamente. |
Por exemplo, você poderia usar preprocessCodeChanges
para modificar as substituições sugeridas para que os comentários de linha sejam preservados ao remover uma variável.
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
} ) ;