Esta resposta será benéfica para aqueles que confiam no pacote npm ts-node
.
Eu também estava lutando com a mesma preocupação de estender o objeto de solicitação , segui muitas respostas no estouro de pilha e terminei seguindo a estratégia mencionada abaixo.
Declarei digitação estendida para expresso no seguinte diretório.${PROJECT_ROOT}/api/@types/express/index.d.ts
declare namespace Express {
interface Request {
decoded?: any;
}
}
em seguida, atualizando meu tsconfig.json
para algo assim.
{
"compilerOptions": {
"typeRoots": ["api/@types", "node_modules/@types"]
...
}
}
mesmo depois de fazer as etapas acima, o estúdio visual parou de reclamar, mas infelizmente, o ts-node
compilador ainda costumava jogar.
Property 'decoded' does not exist on type 'Request'.
Aparentemente, o ts-node
não foi capaz de localizar as definições de tipo estendido para o objeto de solicitação .
Eventualmente, depois de passar horas, como eu sabia que o Código VS não estava reclamando e fui capaz de localizar as definições de digitação, sugerindo que algo está errado com o ts-node
complier.
Atualizar iniciar script
em package.json
consertou para mim.
"start": "ts-node --files api/index.ts",
os --files
argumentos desempenham um papel fundamental aqui, determinando as definições de tipo personalizado.
Para obter mais informações, visite: https://github.com/TypeStrong/ts-node#help-my-types-are-missing