DefinitelyTyped 是否适合新的 TypeScript 定义?

Is DefinitelyTyped appropriate for new TypeScript definitions?

根据https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/

DefinitelyTyped will still be the place to author new declaration files.

但不清楚为什么我们要在 DefinitelyTyped 上创建新定义,而不是直接将它们提交给 NPM。

由于 DT 现在太大了,继续添加到该 repo 似乎适得其反。 DT相比直接发布到NPM有什么优势?

DefinitelyTyped 存储库被视为类型声明的认可社区存储库用于不提供自己的包

回答这个问题取决于你说的是什么意思

submitting them directly to NPM.

如果您的意思是将 .d.ts 文件包含在与 .d.ts 文件对应的包 中,那是值得鼓励的。例如,moment 包包含并维护自己的声明文件。

如果您的意思是仅提供您自己的类型包,那么 DefinitelyTyped 是这些文件的更好位置,并且会提供一些优势。通过将您的文件包含在 DefinitelyTyped 中,它将

  • 受益于 TS typings 机器人自动部署到 @types namespace
    • 这还将在编译器中产生可预测的模块分辨率。
  • 在长期建立的打字源中。你会出现在人们正在寻找的地方。
  • 更容易被他人维护。
    • 包裹会更容易找到
    • 维护者将使用他们熟悉的工作流程和格式

要添加到 Paarth 的答案中,加入 DefinitelyTyped 会提供您应该考虑的额外好处:

  • 旧 TypeScript 语言版本的自动版本标签。如果您将定义文件放在自己的包中,那么您和您的消费者必须就使用哪个版本的 TypeScript 达成一致。如果它在 DefinitelyTyped 上,当你更新定义文件时,@types 发布者将自动标记最新的兼容版本以用于旧的 TS 版本(例如,TS 2.1 上的人可以 npm install @types/yourpkg@ts2.1 获得 2.1 兼容版本)
  • DefinitelyTyped 维护者免费维护。 DT 通常可以通过编写新的 TSLint 规则并将它们应用于整个代码库来找到定义文件错误
  • 更好的版本控制 - 您可以更轻松地为库的多个版本提供并行定义,并独立于底层库对这些版本进行版本控制