【问题标题】:Generate one declaration file for TypeScript library为 TypeScript 库生成一个声明文件
【发布时间】:2013-10-30 08:33:09
【问题描述】:

我在 Visual Studio 2013 中开发了一个库,其中还包含 TypeScript 文件。这些文件正确编译为 JS 文件 (AMD)。

我想要的是为这个库创建一个单一的声明文件,但这不起作用:

tsc --declaration --module AMD --out out.d.ts [files.ts]

有人可以引导我走向正确的道路吗?

使用 TypeScript 0.9.1.1。

【问题讨论】:

    标签: typescript declaration tsc


    【解决方案1】:

    这是因为您提供了.d.ts,这将用 js 内容覆盖声明文件。 此外,您需要删除 module amd,因为它适用于每个文件(不是 --out 友好,请参阅 http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

    所以,试试:

    tsc [files.ts] --declaration --out out.js
    

    这将生成out.d.ts

    【讨论】:

    • 更改为“tsc --declaration --module AMD --out out.js [files.ts]”,现在生成 js 和 d.ts 文件,但为每个源文件单独生成。
    • 现在我得到:'错误 TS5037:除非提供“--module”标志,否则无法编译外部模块。'
    • 如果您的库设计为使用 AMD,则不能将其合并到单个 js(您将使用 r.js)或单个 .d.ts(没有任何替代解决方案)使用 tsc
    • out 重命名为 outFile 并且仅支持“amd”和“system”模块以及 --outFile。 (2018)
    【解决方案2】:

    你总是可以在事后通过命令行调用来做到这一点。在 Visual Studio 中,使用以下命令作为构建后事件命令行调用:

    del $(OutDir)combined.d.ts
    type $(OutDir)*.d.ts > $(OutDir)combined.d.ts
    

    可能需要$(ProjectDir)Some\Other\Path\*.d.ts 等。更多信息请参见here

    【讨论】:

    • 这不起作用,因为本地导入将无法解析(即:import { plugin1 } from './lib';
    【解决方案3】:

    除了 Andy W 的回答之外,您还需要删除参考路径线。使用 FIND 来执行此操作。

    del "$(ProjectDir)bin\combined.d.ts"
    type "$(ProjectDir)*.d.ts" "$(ProjectDir)subFolder1\*.d.ts" "$(ProjectDir)subFolder2\*.d.ts" | FIND /V /I "/// <reference path="  > "$(ProjectDir)bin\combined.d.ts"
    

    【讨论】:

      【解决方案4】:

      为 Typescript 库生成一个声明文件。

      您不需要这样做(或者至少您没有为它提供用例)。

      您的输出文件夹,例如/module/bar 应该是这样的:

      • index.js /module/bar.ts 生成 .js
      • index.d.ts /module/bar.ts 生成 .d.ts

      当用户需要 /module/bar runtime 时,会自动解析为 .js,TypeScript 类型系统会自动解析为 .d.ts

      示例

      【讨论】:

        猜你喜欢
        • 2013-08-20
        • 2021-12-31
        • 2019-04-03
        • 2021-02-18
        • 2017-09-14
        • 2013-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多