Profilere treg TypeScript-kompilering
Bruk --extendedDiagnostics og --generateTrace for å finne flaskehalser.
Profilere treg TypeScript-kompilering er en gratis leksjon i TypeScript Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i TypeScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.
Hvorfor TypeScript kan være tregt
Komplekse betingede typer, store distribusjoner av union-typer og dypt rekursive mappede typer kan føre til at TypeScripts typesjekker blir betydelig tregere i store prosjekter.
// Expensive: distributive conditional on large union
type Slow = LargeUnion extends infer T ? T extends string ? T : never : never;--extendedDiagnostics-flagget
Kjør tsc --extendedDiagnostics for å se en oversikt over kompileringstiden: fasene for parsing, binding, typesjekking og generering av utdata.
tsc --extendedDiagnostics 2>&1 | head -40
# Output:
# Files: 212
# Lines: 48320
# Check time: 8.23s ← focus here--generateTrace-flagget
tsc --generateTrace ./trace produserer en sporingsfil som er kompatibel med Chrome DevTools. De kan laste den inn i fanen Performance for å se hvilke typer som er kostbare.
tsc --generateTrace ./trace-output
# Open trace-output/trace.json in Chrome DevTools > PerformanceAnalysere sporingen
I sporingen ser De etter lange horisontale stolper som representerer kostbare typeinstansieringer. Typenavnet og kildeplasseringen forteller Dem hva som bør optimaliseres.
# Common culprits in traces:
# - Recursive mapped types with large inputs
# - Distributive conditionals over 50+ member unions
# - Deep infer chains on complex generics--listFiles-flagget
tsc --listFiles viser alle filer som er inkludert i kompileringen. Store node_modules-kataloger som ved et uhell er inkludert, er en vanlig årsak til dårlig ytelse.
tsc --listFiles 2>&1 | grep node_modules | wc -l
# If this is large, check your include/exclude settingsRedusere filinkludering
Bruk include og exclude i tsconfig for å begrense hvilke filer TypeScript behandler.
{
"include": ["src/**/*"],
"exclude": ["node_modules", "dist", "**/*.test.ts"]
}skipLibCheck for raske gevinster
skipLibCheck: true hopper over typesjekking av alle .d.ts-deklarasjonsfiler, noe som kan gjøre kompileringen betydelig raskere i prosjekter med mange avhengigheter.
{
"compilerOptions": {
"skipLibCheck": true
}
}Isolere kostbare typer
Trekk ut kostbare typeberegninger til navngitte mellomliggende typer, slik at TypeScript kan hurtigbufre dem i stedet for å beregne dem på nytt ved hvert brukssted.
// Slow: recomputed at each usage
type Result = ComplexUnion extends string ? ComplexUnion : never;
// Fast: cached
type FilteredUnion = ComplexUnion extends string ? ComplexUnion : never;
type Result = FilteredUnion;Kjøre med transpileOnly
Under utvikling kan De bruke ts-jest eller esbuild med transpileOnly: true for å hoppe over typesjekking og få raskere iterasjon. Kjør full typesjekking separat i CI.
// jest.config.js with ts-jest
{
transform: {
"^.+\.tsx?$": ["ts-jest", { diagnostics: false }]
}
}Ytelse i redigeringsprogrammet
Treghet i TypeScript-språkserveren i VS Code kan ofte spores tilbake til de samme kostbare typene. Sjekk TypeScript: Restart TS Server og TS-sporet fra språkserveren.
// VS Code settings.json to enable detailed TS server log:
// "typescript.tsserver.log": "verbose"Oppsummering: Profilering av kompilering
Bruk --extendedDiagnostics for tidsmåling på høyt nivå, --generateTrace for analyse per type, og reduser filinkludering, dype betingelser og store distribusjoner av unioner for å gjøre kompileringen raskere.
Hurtigsjekk
Hvilket flagg genererer en sporingfil som er kompatibel med Chrome DevTools?
Dette har du lært
Profiler TypeScript-kompilering med --extendedDiagnostics og --generateTrace. Reduser kompileringstiden ved å begrense filinkludering, bruke skipLibCheck, mellomlagre mellomtyper og unngå dypt rekursive eller distributive typeoperasjoner.
Lær deg TypeScript med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 101
- Leksjoner
- 352
Ofte stilte spørsmål
Er leksjonen «Profilere treg TypeScript-kompilering» gratis?
Ja – hele teksten i «Profilere treg TypeScript-kompilering» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av TypeScript Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Profilere treg TypeScript-kompilering»?
Bruk --extendedDiagnostics og --generateTrace for å finne flaskehalser. Du øver på TypeScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med TypeScript Academy?
Ingen tidligere erfaring er nødvendig. TypeScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Profilere treg TypeScript-kompilering»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne TypeScript Academy-leksjonen?
Ja. Alle TypeScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Profilere treg TypeScript-kompilering
- Unngå kostbare typeoperasjoner
- skipLibCheck og isolerte deklarasjoner
- Typesjekking i CI: strategier og verktøy