【问题标题】:Make Typescript node modules work together使 Typescript 节点模块协同工作
【发布时间】:2017-02-17 17:53:16
【问题描述】:

有没有人在其中使用 typescript 的模块 1 使用 typescript 引用另一个模块 2 并且都使用诸如 node.d.ts 之类的 tsd 类型的设置?

编译和使用它们都没有问题,只要我只需要模块 2。但是一旦我使用 import 代替,我就会进入重复标识符地狱,因为两个模块中的源文件都导入了例如node.d.ts 来自明显不同的路径的类型。两个项目中的类都使用例如“streams”或“lodash”,因此都在打字中使用它们,因此使用 /// 参考语法。两个项目中的 tsconfig 都不包括类型。

【问题讨论】:

    标签: node.js typescript


    【解决方案1】:

    自从提出这个问题以来,Typescript 已经取得了长足的进步,现在变得容易多了。您可以在package.json 中链接正确的文件:

    {
      "main": "library-commonjs.js",
      "module": "library-es6-module.js",
      "typings": "library-commonjs.d.ts"
    }
    

    main 被使用 CommonJS 和 Node.js 模块解析的包使用。 module 被支持 ES6 导入的包使用。而typings 后面跟着 Typescript(目前是 Typescript 2.2)来解析包的类型定义。

    在解决了这个问题之后,我花了一些时间创建了一个 typescript 样板/启动项目来演示如何正确地做到这一点:

    https://github.com/bitjson/typescript-starter

    该项目包含更多文档,以及 several examples 如何从 typescript 项目中导入代码。

    【讨论】:

      【解决方案2】:

      编辑:使用 TS 2.2,这已经变得好多了。查看接受的答案。

      在 typescript 1.8.x 中这似乎还不太可能。但他们似乎通过https://github.com/Microsoft/TypeScript/issues/7156 来处理它。

      据推测,该问题也可以通过使用 VScode 应该使用的 jsconfig.json 来缓解(参见 https://blogs.msdn.microsoft.com/vscode/2015/07/06/visual-studio-code-es6/)。可悲的是我还没有让它工作。

      【讨论】:

        猜你喜欢
        • 2013-08-25
        • 2012-11-03
        • 2021-12-07
        • 2017-04-03
        • 1970-01-01
        • 1970-01-01
        • 2018-03-01
        • 1970-01-01
        相关资源
        最近更新 更多