首页 > 解决方案 > 如何将导出的函数转换为函数类型?

问题描述

我正在编写 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);

这消除了类型错误,但这使得函数声明成为一个命名函数表达式,一些不可导出的东西更不用说它看起来很丑。所以我陷入了两难境地。我应该如何在导出错误处理程序的同时对其进行转换?我是否必须使用旧<>语法?

标签: typescriptcasting

解决方案


试试这个。

export const errorHandler: ErrorRequestHandler = (err, req, res, next) => {
  ...
}

推荐阅读