【问题标题】:How can I just import typings into Typescript, without the whole module?如何在没有整个模块的情况下将类型导入 Typescript?
【发布时间】:2017-02-12 06:06:50
【问题描述】:

我正在用 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() 调用。如何在不导入 express 本身的情况下告诉 Typescript 快递类型?

快速打字由npm install @types/express 安装,因此在node_modules/@types/express/index.d.ts 中闲逛。

【问题讨论】:

    标签: node.js typescript import npm


    【解决方案1】:

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

    所以只使用@types/express导出的类型不会产生require调用。

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

    通过在您将模块安装到应用程序时执行此操作,它将正确地安全输入,但不会抱怨 express 不存在。

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 2018-11-10
      • 2017-03-13
      • 2012-12-07
      • 2021-04-22
      • 2017-11-05
      • 2022-01-08
      • 2018-10-14
      • 2019-02-05
      相关资源
      最近更新 更多