Perbaiki Kesalahan TS secara otomatis ketika perbaikan kode tersedia.
Untuk sebagian besar kasus penggunaan, Anda seharusnya dapat menggunakan ts-autofix
secara langsung melalui npx
.
npx ts-autofix list
dari root proyek TS Anda akan mencantumkan perbaikan yang tersedia.npx ts-autofix
akan mencoba menjalankan semua perbaikan yang tersedia. Jika tsconfig Anda tidak ada di ./tsconfig.json
, Anda harus menambahkan arg --project <pathToTsConfig>
ke kedua perintah.
Anda juga dapat memfilter perbaikan mana yang diterapkan dengan menggunakan argumen --fixes
atau --errors
.
Argumen | Keterangan |
---|---|
--proyek | Jalur ke file tsconfig Anda. misalnya npx ts-autofix [list] --project foo/tsconfig.json |
-F --perbaikan | Nama satu atau beberapa perbaikan TS yang akan diterapkan. Gunakan npx ts-autofix list untuk menemukan perbaikan yang tersedia.misalnya npx ts-autofix --fixes unusedIdentifier inferFromUsage |
-e --kesalahan | Kode kesalahan TypeScript yang perlu dicari perbaikannya. misalnya npx ts-autofix --errors TS6133 7006 |
--tsCliArgs | CLI tambahan meminta tsc mengganti compilerOptions. misalnya jika Anda mencoba meningkatkan ketatnya proyek Anda, Anda mungkin meneruskan tanda kompiler tambahan yang Anda coba terapkan. misalnya npx ts-autofix [list] --tsCliArgs "--noImplicitAny" |
Anda juga dapat menggunakan ts-autofix
sebagai pustaka, yang memberi Anda kontrol lebih besar atas cara menjalankannya dan menerapkan perbaikan.
misalnya
import { tsAutoFix } from `ts-autofix` ;
tsAutoFix ( {
tsConfigPath : "foo/tsconfig.json" ,
diagnosticsFilter : ( diag ) => diag . code === 6133 ,
} ) ;
Masukan ke tsAutoFix
adalah objek konfigurasi bertipe 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 [ ] ;
} ;
Pilihan | Keterangan |
---|---|
tsconfigPath | (wajib) Jalur ke tsconfig.json proyek Anda. |
compilerOptionsOverride | Penggantian opsional ke compilerOptions di tsconfig Anda. |
filter diagnostik | Panggilan balik opsional untuk memfilter diagnostik/kesalahan TypeScript mana yang ingin diperbaiki. Jika tidak ditentukan, semua diagnostik digunakan. Kembalikan true untuk menyertakan diagnostik tersebut. |
kodeFixFilter | Panggilan balik opsional untuk memfilter perbaikan mana yang akan diterapkan. Jika tidak ditentukan, semua perbaikan akan diterapkan. Kembalikan true untuk menyertakan perbaikan itu. |
praprosesCodeChanges | Panggilan balik opsional untuk mengubah perbaikan sebelum diterapkan. Ini dapat mengembalikan changes yang dimodifikasi, atau melewatkan perubahan individual, tetapi tidak dapat mengubah sourceFile atau diagnostic secara langsung. |
Misalnya, Anda dapat menggunakan preprocessCodeChanges
untuk mengubah penggantian yang disarankan sehingga komentar baris dipertahankan saat menghapus variabel.
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
} ) ;