我在Typescript中编写了一段Express中间件。它将作为独立包发布到npm。我希望能够使用Express类型定义我的函数,因为这可以让我使用类型安全性来编写:
function playWithRequest( req: express.Request, res: express.Response, next: express.NextFunction ) {
req['key'] = 'stuff';
}
module.exports = playWithRequest;
但是,我不需要require('express')
本身,我想避免生成import
调用的require()
语句。如何在不导入表达的情况下告诉Typescript有关快速类型的信息?
快递类型由npm install @types/express
安装,因此在node_modules/@types/express/index.d.ts
中徘徊。
答案 0 :(得分:1)
默认情况下,TypeScript不会将导入转换为require语句,该语句在编译文件中不使用仅JS导出。
因此,当您仅使用@types/express
导出的类型时,不会生成任何需求调用。
当你创建这样的模块(只需要express
打字)时,你可以放心地将@types/express
放入你的依赖项(而不是devDependencies)中并将express
模块放在你的devDependencies中(用于编译)目的)。
每当您将模块安装到您的应用程序时执行此操作,它将是正确安全类型的,但它不会抱怨Express不存在。