如何使用 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 版本提供更严格的类型?的主要内容,如果未能解决你的问题,请参考以下文章
您如何使用 package.json 中的“文件”和“目录”属性?
如何从 Typescript 中的 package.json 获取版本?
如何使用 Jenkins 自动化 package.json 中的版本号
如何使用 package.json 中的“version”属性作为 grunt 中的应用程序目录?