2016-10-04 21 views
0

我正在用Typescript写一篇Express中间件。它将作为独立软件包发布到npm。我想能够定义使用快递类型我的功能,这让我的类型安全写: 如何在没有整个模块的情况下将typings导入到Typescript中?

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

回答

1

默认情况下,TypeScript不会将导入转换为require语句,该语句在编译的文件中没有使用仅JS导出。

因此,当您仅使用由@types/express导出的类型时,将不会生成要求调用。

当你做出这样的模块(即仅适用于分型需要express),你可以放心地把@types/express到您的依赖关系(不devDependencies),并保持你的devDependencies内express模块(编译目的)。

通过这样做,无论何时将模块安装到您的应用程序中,它都将正确安全地键入,但它不会抱怨express不在那里。

相关问题