Estoy usando Typescript para mi pequeño proyecto y tengo un problema. Estoy anidando mi enrutador pero Typescript no parece reconocer el parámetro principal.
En el archivo "hijo" que tengo
const childRouter = express.Router({ mergeParams: true }); childRouter.get('/', (req, res) => { const userName = req.params.username; // This causes the error, Property 'username' does not exist on type '{}' });y luego en el archivo "principal" el código es
import childRouter from './child'; const parentRouter = express.Router(); parentRouter.use('/:username', childRouter);No tengo idea de cómo solucionar esto, parece que TypeScript no reconoce que estoy usando el parámetro principal. ¿Algúna idea de cómo arreglar esto?
Editar: Leí mal la publicación la primera vez.
Los request.params deben ser del siguiente tipo si instaló los tipos correctamente para Express.
interface ParamsDictionary { [key: string]: string; }Si necesita forzar el tipo, también puede hacer lo siguiente:
const username = req.params.username as stringUn poco de una solución sucia:
childRouter.get('/', (req, res) => { const { username } = req.params as any; … });