我正在编写Express中间件,发现很难决定我应该如何对函数进行类型转换。例如,我有一个错误处理程序:
export function errorHandler(err, req, res, next) {
...
}
TypeScript正确地抱怨参数是任意的,所以我将其强制转换(ErrorRequestHandler
来自@types/express
):
export function errorHandler(err, req, res, next) {
...
} as ErrorRequestHandler;
但是由于优先级,这解释不正确,因此我不得不将演员表放在括号中
export (function errorHandler(err, req, res, next) {
...
} as ErrorRequestHandler);
这消除了类型错误,但是这使函数声明变成了一个命名函数表达式,有些东西无法导出,而且看起来很难看。所以我陷入了困境。我应该如何在导出错误处理程序的同时导出它?我是否必须使用旧的<>
语法?
答案 0 :(得分:2)
试试看。
export const errorHandler: ErrorRequestHandler = (err, req, res, next) => {
...
}
答案 1 :(得分:-2)
export function errorHandler(err, req, res, next): ErrorRequestHandler {
...
}