需要vs快速路由器导入到前缀路由

我刚刚开始与使用Express的节点,并尝试使用TypeScript与节点的我学到了在Angular的Typescript。 遵循MDN的快速路由示例(大约下降一半),所以我可以用/auth为一组路由加前缀。 他们使用require('./routes/auth'); 得到导出的路由器,因为我知道它使用import * as authRoutes from './routes/auth'; 基于文档和计算器的答案是等效的。 这显然是不正确的,因为我不能这样做:

 import * as authRoutes from './routes/auth'; app.use('/auth', authRoutes); // Does not work? 

VSCode强调'/auth'参数并显示此错误[ts] Argument of type '"/auth"' is not assignable to parameter of type 'RequestHandlerParams'

虽然这工作:

 const authRoutes = require('./routes/auth'); app.use('/auth', authRoutes); // Does work! 

来自MDN的路线示例:

 import * as express from 'express'; import { Router, Request, Response, NextFunction } from 'express'; import * as authController from '../controllers/auth.controller'; const router: Router = express.Router(); router.get('/register', (req: Request, res: Response, next: NextFunction) => { authController.register(req, res); }); router.get('/login', (req: Request, res: Response, next: NextFunction) => { authController.login(req, res); }); module.exports = router; 

有人能够在很高层次上解释我错过了什么,我可以在博客等中find答案,但显然不能以帮助我理解的方式来解释。

UPDATE

它似乎是这样的事情的组合,因为如果我export { router as authRoutes }然后它的工作,但我不知道我是否应该这样做,或者什么适当的方式导出和导入我们的代码到其他文件应该遵循。

在你的路由定义中,导出路由器: export { router };

将其导入到您的应用中: import { router as authRoutes } from 'routes';