Angular 库应该用 typescript 编写还是编译成 javascript
Posted
技术标签:
【中文标题】Angular 库应该用 typescript 编写还是编译成 javascript【英文标题】:Shall Angular libraries be written in typescript or compiled to javascript 【发布时间】:2018-06-13 23:54:32 【问题描述】:我正在开发一个库,它将通过 npm 作为 Angular 模块安装。该库是用打字稿编写的。在 Angular 5.0.0 之前,一切都像一个魅力,但是自从 5.0 用户开始收到以下错误:
./node_modules/mypackage/index.ts 中的错误模块构建失败: 错误:/node_modules/mypackage/index.ts 不属于 编译输出。请检查其他错误消息 详情。
作为一种解决方法,我可以在 tsconfig.json 中添加文件的包含路径。我的问题是我是否应该继续在打字稿中提供一个库,还是应该将其编译为 JS 并作为编译包发布,为什么?
【问题讨论】:
【参考方案1】:将 typescript 代码发布到 npm 的最佳实践写在:https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html
TL:DR - 将 js 与正确的类型定义一起发布。
它将允许任何 js 消费者可以使用 lib,并且 ts 用户可以从类型中受益。在极少数情况下,您希望按原样交付 ts 代码,例如允许从用户级代码到节点模块的细粒度编译。
【讨论】:
我同意,我在 github.com 上有几个项目,您可以在其中看到我如何设置 typescript 以允许通过 npm 分发(例如github.com/wzr1337/rsiServer)。我将源映射与模块一起提供,因为我认为它使每个人的调试都变得更加容易。以上是关于Angular 库应该用 typescript 编写还是编译成 javascript的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2015 没有将 TypeScript 编译为 ASP.NET Core 项目的一部分?
如何在 npm 上发布 angular 2 typescript 库
如何在 Angular 2 typescript 应用程序中使用 moment.js 库?
typescript Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming/angular-2/