javascript - 表达 : typescript: Argument of type 'typeof <express.Router>' is not assignable to parameter of type 'RequestHandlerParams'

标签 javascript express typescript typescript-typings

我将 expressjs 与最新的 typescript 定义文件和来自 https://github.com/DefinitelyTyped/DefinitelyTyped 的 typescript 2.3.4 一起使用. 我定义了一个路由器,并希望按照官方 4.x 文档 (app.use('/calendar', router);) 中的说明从子路径使用它,但出现以下错误

Error: /Users/matthias/Documents/private workspace/universal/src/server/server.ts (161,34): Argument of type 'typeof "/Users/matthias/Documents/private workspace/universal/src/server/routes/login.router"' is not assignable to parameter of type 'RequestHandlerParams'.
  Type 'typeof "/Users/matthias/Documents/private workspace/universal/src/server/routes/login.router"' is not assignable to type '(RequestHandler | ErrorRequestHandler)[]'.
    Property 'length' is missing in type 'typeof "/Users/matthias/Documents/private workspace/universal/src/server/routes/login.router"'.

这是我正在使用的路由器,省略了实际代码...

const router : express.Router = express.Router();
let loginController = new LoginController();

router.post('/signin', function(req: express.Request, res: express.Response, next: express.NextFunction) {

  ...

  })(req, res, next);
});

...

export default router;

...这是对它的调用的简化版本。

import * as loginRouter from './routes/login.router';

private app = express();
this.app.use('/api/v1/auth', loginRouter);

是我做错了什么,还是这个用例没有在 typescript 定义文件中正确定义?

亲切的问候

最佳答案

找到了,import * as ...好像丢失了它的typescript信息(IRouter, Router)

解决方案是使用 import loginRouter from './routes/login.router'; 代替

关于javascript - 表达 : typescript: Argument of type 'typeof <express.Router>' is not assignable to parameter of type 'RequestHandlerParams' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44920881/

相关文章:

javascript - Angular 2 observable 订阅箭头函数变得又大又脏

javascript - 从 aspx.cs 页面调用 html 页面中定义的 javascript 函数

javascript - 重定向 URL JavaScript

javascript - 如何使用 Javascript 从字符串中提取数字?

javascript - 在 Express 应用程序的函数中返回响应

node.js - 使用 EJS 模板传递变量

具有嵌套函数的现有 jQuery 插件的 Typescript 定义

javascript - 为什么 Web Worker 性能在 30 秒后急剧下降?

node.js - express-session 浏览器关闭时更改 session

typescript - 服务器和客户端 TypeScript 项目组织、编译