现在每个人都在强制打字。有很多关于它的粉丝和文章。Angular 团队正在 TS 中制作他们的框架。但是我将 ES6 迁移到 TS 的经历非常令人失望。
上个月,我尝试将我们相对较新的代码库(用 ES6 编写)迁移到 Typescript,但遇到了很多陷阱!
为了清楚起见,我们谈论的是带有 mocha 单元测试和 ESLint 配置的 node.js 应用程序(使用 babel 进行编译)。
首先,为了启用类型检查,我设置了noImplicitAny
选项,遇到了数百个错误并修复了它。但在那之后,由于打字稿不理解一些node.js预定义stream
的模块,我得到了打字错误,比如(问题实际上更大,因为很多模块都没有打字)。
之后,我安装了typings
- 推荐替换用于tsd
管理库d.ts
文件的工具,但它正在node
输入定义,在解决stream
问题的同时,添加了很多错误,因为它重复了一些预定义的类型。
另外,我发现 typescript 实际上并没有将 ES6 的很多特性编译到 ES5 中,比如生成器。它迫使我进行复杂的构建过程(TS -> (typescript) ES6 -> (babel) ES5),这意味着我必须浪费我的原始源映射。
以上都花了很多时间来配置。
所以,我很困惑。我真的很喜欢打字稿背后的想法,但实施对我来说似乎很粗鲁。我希望我错了。
也许在实际项目中使用 Typescript 而不是 HelloWorld 的人可以解释我做错了什么?