Noté que el tipo de parámetros de consulta en req.query es
string | string[] | QueryString.ParsedQS | QueryString.ParsedQS[]pero hasta ahora, cada vez que usé req.query siempre obtuve cadenas.
mis preguntas son
El tipo string | string[] | QueryString.ParsedQS | QueryString.ParsedQS[] es el tipo devuelto por el método qs.parse() , eche un vistazo aquí al archivo de declaración: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/qs/index.d. ts#L57 .
Eche un vistazo a la documentación de qs para ver los posibles valores de retorno de qs.parse() :
https://github.com/ljharb/qs
Para que req.query se analice de cadena a objeto, debe llamar a express app.set('query parser', 'extended') , extended es el valor predeterminado, pero es posible que lo haya cambiado en su código:
https://expressjs.com/en/api.html#app.set