Profilera långsam TypeScript-kompilering
Använd --extendedDiagnostics och --generateTrace för att hitta flaskhalsar
Profilera långsam TypeScript-kompilering är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 4 lektioner.
Varför TypeScript kan vara långsamt
Komplexa villkorstyper, stora uniondistributioner och djupt rekursiva mappade typer kan få TypeScripts typkontroll att bli dramatiskt långsammare i stora projekt.
// Expensive: distributive conditional on large union
type Slow = LargeUnion extends infer T ? T extends string ? T : never : never;Flaggan --extendedDiagnostics
Kör tsc --extendedDiagnostics för att se en uppdelning av kompileringstiden: faserna parsning, bindning, typkontroll och generering.
tsc --extendedDiagnostics 2>&1 | head -40
# Output:
# Files: 212
# Lines: 48320
# Check time: 8.23s ← focus hereFlaggan --generateTrace
tsc --generateTrace ./trace skapar en trace-fil som är kompatibel med Chrome DevTools. Du kan läsa in den på fliken Performance för att se vilka typer som är kostsamma.
tsc --generateTrace ./trace-output
# Open trace-output/trace.json in Chrome DevTools > PerformanceAnalysera tracen
Leta i tracen efter långa horisontella staplar som representerar kostsamma typinstansieringar. Typnamnet och källans plats visar vad du bör optimera.
# Common culprits in traces:
# - Recursive mapped types with large inputs
# - Distributive conditionals over 50+ member unions
# - Deep infer chains on complex genericsFlaggan --listFiles
tsc --listFiles visar varje fil som ingår i kompileringen. Stora node_modules-kataloger som råkat inkluderas är en vanlig orsak till prestandaproblem.
tsc --listFiles 2>&1 | grep node_modules | wc -l
# If this is large, check your include/exclude settingsMinska filinkluderingen
Använd include och exclude i tsconfig för att begränsa vilka filer TypeScript bearbetar.
{
"include": ["src/**/*"],
"exclude": ["node_modules", "dist", "**/*.test.ts"]
}skipLibCheck för snabba förbättringar
skipLibCheck: true hoppar över typkontrollen av alla .d.ts-deklarationsfiler, vilket kan snabba upp kompileringen avsevärt i projekt med många beroenden.
{
"compilerOptions": {
"skipLibCheck": true
}
}Isolera kostsamma typer
Extrahera kostsamma typberäkningar till namngivna mellanliggande typer så att TypeScript kan cacha dem i stället för att beräkna om dem vid varje användningsställe.
// Slow: recomputed at each usage
type Result = ComplexUnion extends string ? ComplexUnion : never;
// Fast: cached
type FilteredUnion = ComplexUnion extends string ? ComplexUnion : never;
type Result = FilteredUnion;Kontrollera med transpileOnly
Under utvecklingen kan du använda ts-jest eller esbuild med transpileOnly: true för att hoppa över typkontrollen och få snabbare iterationer. Kör fullständiga typkontroller separat i CI.
// jest.config.js with ts-jest
{
transform: {
"^.+\.tsx?$": ["ts-jest", { diagnostics: false }]
}
}Prestanda i editorn
Fördröjningar i TypeScript-språkservern i VS Code beror ofta på samma kostsamma typer. Kontrollera TypeScript: Restart TS Server och spårningen från språkservern.
// VS Code settings.json to enable detailed TS server log:
// "typescript.tsserver.log": "verbose"Sammanfattning: Profilering av kompilering
Använd --extendedDiagnostics för tidsmätning på hög nivå och --generateTrace för analys per typ. Begränsa filinkludering, djupa villkor och stora uniondistributioner för att snabba upp kompileringen.
Snabbkontroll
Vilken flagga genererar en spårningsfil som är kompatibel med Chrome DevTools?
Det här har ni lärt er
Profilera TypeScript-kompilering med --extendedDiagnostics och --generateTrace. Minska kompileringstiden genom att begränsa filinkludering, använda skipLibCheck, cachelagra mellanliggande typer och undvika djupt rekursiva eller distributiva typoperationer.
Lär dig TypeScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 101
- Lektioner
- 352
Vanliga frågor
Är lektionen ”Profilera långsam TypeScript-kompilering” gratis?
Ja – hela texten till ”Profilera långsam TypeScript-kompilering” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Profilera långsam TypeScript-kompilering”?
Använd --extendedDiagnostics och --generateTrace för att hitta flaskhalsar Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?
Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Profilera långsam TypeScript-kompilering”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?
Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Profilera långsam TypeScript-kompilering
- Undvik kostsamma typoperationer
- skipLibCheck och Isolated Declarations
- Typkontroll i CI: strategier och verktyg