首页 > 解决方案 > 设置匿名函数 TypeScript 的类型

问题描述

我在 Express 中有一个匿名函数,如下所示:

app.use((err, req, res, next) => {
  // ...
});

我想将函数的类型设置为ErrorRequestHandler(不是返回类型!)。

我可以这样做:

const X: ErrorRequestHandler = (err, req, res, next) => {
  // ...
}
app.use(X);

但是有语法可以内联吗?像这样:

app.use((err, req, res, next) => {
  // ...
} : ErrorRequestHandler); // Note: this doesn't work.

标签: javascriptnode.jstypescriptexpress

解决方案


你只需要使用一些额外的括号来帮助 Typescript。

例如..

app.use(<ErrorRequestHandler>((err, req, res, next) => {
}));

你当然as也可以使用,以避免任何 JSX 混淆。

app.use(((err, req, res, next) => {
}) as ErrorRequestHandler);

注意上面的整个函数是如何括在括号内的,这允许 Typescript 将类型转换应用于整个函数表达式。

req, res, &上的代码完成next将按预期工作。


推荐阅读