Ta odpowiedź będzie korzystna dla tych, którzy polegają na pakiecie npm ts-node.
Zmagałem się również z tym samym problemem rozszerzania obiektu żądania , śledziłem wiele odpowiedzi w przepełnieniu stosu i zakończyłem zgodnie z poniższą strategią.
W następującym katalogu zadeklarowałem rozszerzone typowanie dla express .${PROJECT_ROOT}/api/@types/express/index.d.ts
declare namespace Express {
interface Request {
decoded?: any;
}
}
następnie zaktualizuj mój tsconfig.jsondo czegoś takiego.
{
"compilerOptions": {
"typeRoots": ["api/@types", "node_modules/@types"]
...
}
}
nawet po wykonaniu powyższych czynności studio wizualne przestało narzekać, ale niestety ts-nodekompilator wciąż wrzucał.
Property 'decoded' does not exist on type 'Request'.
Najwyraźniej ts-nodenie był w stanie zlokalizować rozszerzonych definicji typu dla obiektu żądania .
W końcu po spędzeniu wielu godzin, ponieważ wiedziałem, że VS Code nie narzeka i był w stanie zlokalizować definicje pisania, sugerując, że coś jest nie tak z ts-nodeComplier.
Aktualizacja Start scriptw package.jsonnaprawiła to za mnie.
"start": "ts-node --files api/index.ts",
te --filesargumenty odgrywają kluczową rolę tu znaleźć określenia definicji niestandardowego typu.
Więcej informacji można znaleźć na stronie : https://github.com/TypeStrong/ts-node#help-my-types-are-missing