使用打字稿引用节点库时出现重复标识符错误

Duplicate identifier error when referencing a node library using typescript

我是 typescript 的新手,正在尝试启动一个 hapi.js 项目,但是在我的代码中尝试 require('boom') 时出现错误

Duplicate identifier 'Boom'

/// <reference path="../typings/tsd.d.ts" />

var config = require('../config'),
    User = require('../models/user'),
    Boom = require('boom'),
    joi = require('joi');

我的tsd.json

{
  "version": "v4",
  "repo": "borisyankov/DefinitelyTyped",
  "ref": "master",
  "path": "typings",
  "bundle": "typings/tsd.d.ts",
  "installed": {
    "node/node.d.ts": {
      "commit": "846a250e0a6f5e6adf6347ee4ca442a9d1abd8fc"
    },
    "hapi/hapi.d.ts": {
      "commit": "846a250e0a6f5e6adf6347ee4ca442a9d1abd8fc"
    },
    "bluebird/bluebird.d.ts": {
      "commit": "846a250e0a6f5e6adf6347ee4ca442a9d1abd8fc"
    },
    "boom/boom.d.ts": {
      "commit": "846a250e0a6f5e6adf6347ee4ca442a9d1abd8fc"
    },
    "pg/pg.d.ts": {
      "commit": "846a250e0a6f5e6adf6347ee4ca442a9d1abd8fc"
    }
  }

我已将 boom 和 hapi 添加到我的 tsd - 如果 hapi 也引用 boom 是否会导致某种循环错误?

我应该如何在打字稿中引用这些库?

如果您不在文件中放置全局 importexport,那么就 TypeScript 而言,您的文件是 global[=22 的一部分=] 命名空间,因此您在 Boom 上遇到名称冲突。修复:使用 import/require 而不是 var/require

import Boom = require('boom');

要了解更多信息:https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1