Diese Antwort ist für diejenigen von Vorteil, die sich auf das npm-Paket verlassen ts-node
.
Ich hatte auch mit dem gleichen Problem zu kämpfen, das Anforderungsobjekt zu erweitern . Ich folgte vielen Antworten im Stapelüberlauf und folgte schließlich der unten genannten Strategie.
Ich habe die erweiterte Eingabe für Express im folgenden Verzeichnis deklariert .${PROJECT_ROOT}/api/@types/express/index.d.ts
declare namespace Express {
interface Request {
decoded?: any;
}
}
dann aktualisiere ich tsconfig.json
auf so etwas.
{
"compilerOptions": {
"typeRoots": ["api/@types", "node_modules/@types"]
...
}
}
Selbst nachdem die obigen Schritte ausgeführt wurden, hörte das Visual Studio auf, sich zu beschweren, aber leider ts-node
warf der Compiler immer noch.
Property 'decoded' does not exist on type 'Request'.
Anscheinend ts-node
konnte der die erweiterten Typdefinitionen für die Anfrage nicht finden .
Nachdem ich Stunden verbracht hatte, beschwerte ich mich, dass der VS-Code sich nicht beschwerte und die Typisierungsdefinitionen finden konnte, was bedeutet, dass etwas mit der ts-node
Konformität nicht stimmt.
Aktualisierungsstart script
in package.json
behoben für mich.
"start": "ts-node --files api/index.ts",
Die --files
Argumente spielen hier eine Schlüsselrolle bei der Bestimmung der benutzerdefinierten Typdefinitionen.
Weitere Informationen finden Sie unter: https://github.com/TypeStrong/ts-node#help-my-types-are-missing