如何在不使用整个模块的情况下将打字输入到Typescript中?

时间:2016-10-04 07:04:15

标签: node.js typescript import npm

我在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中徘徊。

1 个答案:

答案 0 :(得分:1)

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

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

当你创建这样的模块(只需要express打字)时,你可以放心地将@types/express放入你的依赖项(而不是devDependencies)中并将express模块放在你的devDependencies中(用于编译)目的)。

每当您将模块安装到您的应用程序时执行此操作,它将是正确安全类型的,但它不会抱怨Express不存在。