unknown vs any in TypeScript: warum any die Prüfung abschaltet, wie unknown Narrowing erzwingt, mit Praxisbeispielen und Regeln für KI Code von NCA
Mehr erfahren
{
"compilerOptions": {
"target": "es2022",
"module": "esnext",
"moduleResolution": "bundler",
"strict": true,
"noEmit": true
},
"include": ["src"]
}
Ein Tag inhouse mit Benjamin Klein für Developer, Tester und Admins. Context Engineering, Harness, ADRs und zwei Hands on Blöcke mit KI Agenten in eurem Setup.
In gewachsenen Projekten ist die tsconfig oft Jahre alt und niemand traut sich ran. Wir lesen sie mit dir durch, schalten Prüfungen stufenweise ein und halten die Zahl der Fundstellen bearbeitbar. Das gehört zu unserer Arbeit im Frontend Development und bei der TypeScript 7 Migration.
Die Regeln für KI Agents setzen auf derselben Konfiguration auf. Das zeigen die AI Coding Guidelines für TypeScript und das Vibe Coding Consulting.
Was strict im Einzelnen einschaltet, steht im Beitrag zu TypeScript und strict Mode in Astro. Einige nützliche Prüfungen sind darin aber nicht enthalten und müssen eigens gesetzt werden.
{
"compilerOptions": {
"strict": true,
"noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
"noFallthroughCasesInSwitch": true,
"exactOptionalPropertyTypes": true
}
}
{
"extends": "astro/tsconfigs/strict",
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
}
}
// tsconfig.json im Stammverzeichnis
{
"files": [],
"references": [
{ "path": "./packages/ui" },
{ "path": "./packages/web" }
]
}
// packages/ui/tsconfig.json
{
"compilerOptions": {
"composite": true,
"rootDir": "./src",
"outDir": "./dist"
},
"include": ["src"]
}
indicates that the directory is the root of a TypeScript project
unknown vs any in TypeScript: warum any die Prüfung abschaltet, wie unknown Narrowing erzwingt, mit Praxisbeispielen und Regeln für KI Code von NCA
Mehr erfahrenDie beste tsconfig hilft wenig, wenn der Type Check nur lokal läuft. Als eigener Schritt gehört er in die CI CD Pipeline und in die Quality Gates für KI Code. Für Agents kommt ein Verweis in die AGENTS.md dazu.
Sichtbar werden dann vor allem verstecktes any und vergessene Fälle. Einen Überblick zur Sprache gibt der TypeScript Eintrag, Astro Projekte finden die Grundlagen in unserem Astro Beitrag.
Optimieren Sie Ihre Webseite mit Astro JS und nutzen Sie die Vorteile einer schnellen, sicheren und barrierefreien Webseite. Erfüllen Sie die gesetzlichen Anforderungen und verbessern Sie die Benutzererfahrung Ihrer Webseite. Mit Astro JS können Sie die Ladezeit reduzieren, die Sicherheit maximieren und die SEO-Optimierung verbessern. Kontaktieren Sie uns, um mehr zu erfahren und um Ihre Webseite auf ein neues Level zu heben.
Sie markiert das Stammverzeichnis eines TypeScript Projekts und enthält die Compiler Optionen. Darin steht, welche Dateien dazugehören, wie Importe aufgelöst werden und wie streng geprüft wird. Ein Aufruf von tsc ohne Dateinamen liest diese Datei automatisch.
Am schnellsten mit npx tsc --init. Der Befehl legt eine Datei mit sinnvollen Vorgaben an. Bei Frameworks wie Astro erbst du besser über extends deren Vorlage. Danach ergänzt du nur noch, was in deinem Projekt anders sein soll.
strict ist jetzt Standard, module steht auf esnext, und types ist standardmäßig leer. rootDir zeigt auf das Projektverzeichnis. baseUrl, moduleResolution node und target es5 werden nicht mehr unterstützt. Prüfe bei einer Migration vor allem rootDir und types.
Mit einem Bundler wie Vite passt bundler. Für Code, der direkt in Node.js läuft, ist nodenext die richtige Wahl. Die alte Einstellung node ist in TypeScript 7 entfernt. Passe module dabei passend an, sonst meldet der Compiler einen Konflikt.
Ja, denn sie legt fest, wie viel der Compiler einem Agent durchgehen lässt. Mit strict und noUncheckedIndexedAccess fallen viele Annahmen sofort auf. Der Agent liest die Fehler und korrigiert sie im selben Lauf, bevor jemand den Diff öffnet.
Zugriffe über einen Index liefern zusätzlich undefined im Typ. Ein liste[0] ist damit nicht mehr automatisch vorhanden, und du musst den Fall behandeln. In älteren Projekten erzeugt das viele Fundstellen, deshalb schaltest du es am besten gesondert ein.
paths gilt nur für den Compiler und schreibt Importe beim Bauen nicht um. Dein Bundler oder Node.js braucht den Alias zusätzlich in der eigenen Konfiguration. Stimmt beides nicht überein, ist der Type Check grün, aber der Import schlägt beim Start fehl.
skipLibCheck überspringt die Prüfung von Deklarationsdateien, auch aus node_modules. Das spart Zeit und verhindert Fehler aus fremden Paketen. In Anwendungen ist das üblich. Bei einer veröffentlichten Bibliothek solltest du deine eigenen Deklarationen trotzdem anders absichern.
Oft reicht eine. Mehrere lohnen sich, wenn Teile unterschiedlich laufen, etwa Browser Code und Node Skripte, oder im Monorepo. Eine gemeinsame Basis mit extends verhindert, dass die Dateien auseinanderlaufen.
Einzeln und nacheinander. Schalte eine Option ein, zähle die Fundstellen und behebe zuerst die Ränder wie API Zugriffe und Formulare. Bleibt die Pipeline danach grün, folgt die nächste. Ein einziger großer Pull Request lässt sich kaum sinnvoll prüfen.