w3ctech

与大师面对面 - TypeScript 的现状与未来

有幸经过裕波推荐参加了 24 号在北京举行的 "大师面对面" TypeScript 圆桌, 向 TypeScript 之父 (同时也是 Delphi/C# 之父) Anders Hejlsberg 询问了一些关于 TypeScript 语言及其生态相关的问题, 并得到了 Anders 的耐心回答.

从第一个公开版本 0.8.1 在 2012 年 11 月 15 日发布到现在就快三年了, 在去年 4 月抵达 1.0 后, 先后经过了 1.1, 1.3, 1.4, 1.5 以及 1.6 几个主要版本. 其中 1.1 使用了新的架构, 大幅提升编译速度. 1.5 和 1.6 两个版本则实现了大量 ES6 特性和少量 ES7 特性.

在这期间 Visual Studio Code 出世, 为 TypeScript 提供了绝佳支持, 也成为了我自己的首选编辑器 (Anders 称其为 IDE). 于此同时 TypeScript 还为 Sublime 提供了官方支持, 第三方支持更是覆盖了主流的 IDE 与编辑器.

对于一门新生的语言来说, 生态大过天. TypeScript 所做的很多努力, 我相信都是为了让它能和现有繁荣的 JavaScript 生态融合在一起.

TypeScript 可以通过添加声明文件 (.d.ts) 理解现有的 JavaScript 代码, 在社区的努力下, DefinitelyTyped 项目已经有超过 1300 个 JavaScript 类库的声明文件, 覆盖了几乎所有的常见类库. Visual Studio Code 甚至可以通过这些声明文件为 JavaScript 开发提供智能提示与纠错. 在和 Anders 的交流中得知, 这一项功能并非 Visual Studio Code 独占, 而将合并为 TypeScript 的一部分. 这就意味着未来会有更多的编辑器支持通过 TypeScript 的声明文件提供 JavaScript 开发的智能提示, 一方面使用 TypeScript 开发的类库在用于 JavaScript 项目时能够有机会获得更准确的智能提示和纠错, 另一方面 JavaScript 类库开发者也可以选择使用 TypeScript 声明文件来标注自己的 API, 方便其他 JavaScript 开发者使用. 随着相关工具链 (如文档生成工具) 的进一步成熟, 我相信相关应用会越来越多.

与之相关的, 在 1.6 中, TypeScript 增加了对于 node_modules 解析的支持. 添加了声明文件的 Node.js 模块, 在安装后无需任何额外操作就可以得到智能提示和静态类型检查. 在 1.7 中, 预计会加入相关路径映射的配置, 以支持诸如 jspm 等更多模块化场景.

除开草根社区的活跃程度, 我们还询问了一些一线公司对于 TypeScript 的态度. Anders 也自然是提到了 Google 使用 TypeScript 开发的 Angular 2. 不过意外的是, Angular 2 团队使用的是 Visual Studio Code. 同时据称 Facebook 内部也有推动 TypeScript 的声音存在, 虽然 Facebook 也有自己的 Flow 作为相似问题的方案.

在提到 TypeScript 的竞争者时, Anders 表示在诸多 JavaScript 的派生语言中, 静态类型这一块儿并没有什么竞争. 但作为 ES future 的编译器来说, 可以算上 Babel. 实际上, 有的 TypeScript 开发者会先将 TypeScript 编译为 ES6 (也就是仅使用 TypeScript 的静态类型系统), 再通过 Babel 将其编译到 ES3/5.

另外一个大家关注的重点是, TypeScript 会不会逐渐发展成为一门与 JavaScript 不同路的语言. Anders 给出的答案是否定的, 虽然 TypeScript 本身的发展也会影响 ECMAScript 的发展, 微软目前也非常紧密地参与到了相关标准的指定中.

除开 TypeScript 之外, Anders 还聊到了微软的变化, 或者说行业的变化. 在过去, 开源支持者可能并不是主流, 而现在, 如果没有足够好的理由, 开源已经成为了默认选项. 在过去的一段时间, 微软开源了大量项目, 而 IE/Edge 的 JavaScript 引擎 Chakra 也很有可能开源.

圆桌之后是更多人参与的分享, Anders 为我们阐述了 JavaScript 在大型应用开发中的痛点, TypeScript 如何解决这些问题. 同时还介绍了 TypeScript 的最新特性. 稍微可惜的是时间并不充裕, 关于 async/await 相关的内容没能在分享上完成.

全家福

最后, Connect(); // 2015 将在 11 月 18 日举行, 届时会有更多微软在开源以及免费工具上的新动态, 欢迎同作者一起关注!

前端圈微信

扫码关注前端圈微信公众号

共收到0条回复