如何使用 package.json 中的 typesVersions 字段为较新的 typescript 版本提供更严格的类型?

Posted

技术标签:

【中文标题】如何使用 package.json 中的 typesVersions 字段为较新的 typescript 版本提供更严格的类型?【英文标题】:How do I use the typesVersions field in package.json to ship stricter types for newer typescript versions? 【发布时间】:2020-02-15 19:33:15 【问题描述】:

根据the TypeScript 3.1 release notes,typescript 提供了一种通过在package.json 中设置typesVersions 字段来在npm 包中传送更严格类型的方法,如下所示:


  "name": "package-name",
  "version": "1.0",
  "types": "./index.d.ts",
  "typesVersions": 
    ">=3.1":  "*": ["ts3.1/*"] 
  

但是,文档没有说明如何创建指定的 ts3.1/index.d.ts 文件。我是否必须在此位置手动写入index.d.ts 文件?有没有办法使用 typescript 或相关的构建工具来有条件地生成更严格的类型?

【问题讨论】:

刚刚发现了一个正在开发的全新工具,并更新了我的答案。请再看一遍。 【参考方案1】:

更新:看起来一位 TS 团队成员刚刚开始为此开发工具(可能是一个副项目)。在撰写本文时,它似乎还没有完成,但绝对值得一看。 https://github.com/sandersn/downlevel-dts


(原答案)

据我所知,还没有人编写过自动生成这些文件的工具。来自 TypeScript 团队成员的最新公开消息是 they don't intend to add this 作为编译器功能。也是requested here,没有任何回应。所以你现在可能会被困在手动翻译中。

(从概念上讲,执行此操作的工具很像“Babel for typings”:消除新的语法/关键字和“polyfilling”或消除新的类型助手。甚至可以编写为 Babel 插件.)

【讨论】:

以上是关于如何使用 package.json 中的 typesVersions 字段为较新的 typescript 版本提供更严格的类型?的主要内容,如果未能解决你的问题,请参考以下文章