TypeScript编译器包含具有不同名称的TypeScript定义中的模块

时间:2017-06-19 06:23:24

标签: javascript node.js typescript typescript-typings typescript2.0

我有一个简单的Nodejs Typescript项目,它通过TypeScript定义文件导入一些JavaScript库。即:

import * as zmq from 'zmq'
const sock = zmq.socket("push");

当我编译它时,结果是:

"use strict";
exports.__esModule = true;
var zmq = require("zmq");
var sock = zmq.socket("push");
//# sourceMappingURL=index.js.map

哪个看起来不错,除非该行:

var zmq = require("zmq");

应该是zmq的Node JavaScript模块,即:

var zmq = require("../node_modules/zeromq");

如何让编译器执行此替换?

我的配置如下:

{
  "compilerOptions": {
    "declaration": true,
    "module": "commonjs",
    "moduleResolution": "node",
    "noImplicitAny": true,
    "outDir": "./lib",
    "preserveConstEnums": true,
    "removeComments": true,
    "sourceMap": true,
    "typeRoots": [
      "./node_modules/@types"
    ]
  },
  "include": [
    "node_modules/@types/**/*.d.ts",
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*-spec.ts",
    "!node_modules/@types/**/*.d.ts"
  ]
}

zmq安装如下:

npm install zeromq --save
npm install @types/zmq --save

任何建议都会很棒 - 谢谢。

编辑:

好的,问题可能是因为zeromq是我想使用的zeromq库的最新名称,但是这种类型仍然被称为zmq。因此,当编译它执行时,编译器似乎无法确定zmq应该映射到zeromq(为什么会这样)。

那么有没有办法绕过这个,缺少@ types / zmq重命名?

1 个答案:

答案 0 :(得分:1)

  

那么有没有办法绕过这个,缺少@ types / zmq重命名?

使用以下内容添加types.d.ts文件:

declare module "zeromq" {
  export * from "zmq"
}