TransWikia.com

Override de tipagem typescript

Stack Overflow em Português Asked by Murilo Fechio on December 2, 2021

Quero adicionar uma propriedade user para o request do Express. Para isso criei um arquivo chamado express.d.ts com o seguinte conteúdo:

declare namespace Express {
    export interface Request {
        user: {
           id: string;
        }
    }
}

Ao tentar acessar no meu middleware a propriedade request.user criada, tenho o seguinte erro:

- error TS2339: Property 'user' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs>'.

Código da classe className.ts do middleware:

export default function methodName(request: Request, response: Response, next: NextFunction): void{
    request.user = {
        id: 10,
    }
}

Estrutura das pastas:

src
     @types
          express.d.ts
     middlewares
          className.ts

2 Answers

Add essa linha no seu scripts package.json

"dev:server": "ts-node-dev --inspect --transpile-only --ignore-watch node_modules src/server.ts",

Answered by Mateus Carbajal on December 2, 2021

Tenta fazer assim no arquivo de declaração do express que você criou:

declare namespace Express { export interface Request { user?: { id: string; } } }

colocando como opcional

Answered by Clailson Jorge on December 2, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP