Express公开Express.Request
,Express.Response
,但我还需要Express.NextFunction
接口,该接口在Express名称空间中不可用。
如何在index.d.ts中使用NextFunction
界面?
上下文:
index.d.ts
声明一个名称空间 ServerPlugin 。
ServerPlugin包含一个名为 Params
在应用程序中的任何地方,我都可以按预期使用ServerPlugin.Params
但是,一旦我从@types/express导入NextFunction,在index.d.ts
中,使用ServerPlugin.Params
的所有文件都会出现错误。
找不到命名空间“ ServerPlugin”
index.d.ts
如果不导入NextFunction
并注释掉next
=>没有错误
declare namespace ServerPlugin {
interface Params {
req: Express.Response;
res: Express.Request;
next: NextFunction;
options: object;
// ... and much more
}
}
import { NextFunction } from 'express';
user.ts
此文件说它找不到命名空间ServerPlugin。
如果我import { ServerPlugin } from '../../index'
,没有错误,但是在使用NextFunction之前不必导入。
import { userViewerChunk } from './graphql/UserType';
const user: Function = ({ next, extendSchema }: ServerPlugin.Params): void => {
extendSchema(userViewerChunk);
next();
};
export default user;