是否有充分的理由在打字稿项目中将编译器选项“声明”设置为 true

Posted

技术标签:

【中文标题】是否有充分的理由在打字稿项目中将编译器选项“声明”设置为 true【英文标题】:Is there any good reason to set the compiler option "declaration" to true in a typescript project 【发布时间】:2018-06-05 02:21:12 【问题描述】:

我有一个打字稿项目,我可能想在未来将它作为 NPM 包发布。

现在我已经在我的tsconfig.json 中设置了"declaration": true。 然而,这给我带来了一些问题(这对这个问题并不重要)。

如果我将它设置为false,一切都会按我的意愿运行。

declaration 标志设置为 true 时,会生成 d.ts 文件。但是根据帖子我的理解 About "*.d.ts" in TypeScript 是,这仅在您尚未使用 typescript 编程(即您的项目是 javascript)时才相关,以便您以后可以在 typescript 项目中轻松使用此 javascript 库,因为您现在拥有类型。

那么当项目是“纯”打字稿时,为什么有人应该将此设置设置为true?我可以安全地将其设置为false吗?

【问题讨论】:

【参考方案1】:

在 typescript 项目中将编译器选项“声明”设置为 true 有什么好的理由吗?

是的。

特别是如果您要作为 NPM 包发布!

理由

当您创建 NPM 包时,您应该包含 .js.d.ts 文件,而不是 .ts 文件。这使您的包真正可移植,并确保它可以被 TypeScript 项目普通的旧 JavaScript 项目使用。

这是 NPM 上 TypeScript 的推荐打包机制,有关发布的更多信息可以在 handbook 中找到。

【讨论】:

在等待答案时,我自己得出了同样的结论——感谢您的确认;)

以上是关于是否有充分的理由在打字稿项目中将编译器选项“声明”设置为 true的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React Native 项目中将 JS 库导入打字稿

是否可以在子文件夹中运行打字稿编译器?

打字稿模块分辨率

是否可以在打字稿中将某些内容标记为已弃用?

无法重新声明块范围变量(打字稿)

使用 RollUp 捆绑打字稿 - 无法处理编译器选项