標籤:

【RPU-A】Babel 即將增加 TypeScript 支持

類別

周邊動態/Related Project Update

置信度

Announcement

起始時間

2017-05-27

更新(2017-06-28)

Babylon 對 TypeScript 的支持已經完成,並發布於 7.0.0-beta.16 版本中。

內容

雖然聽上去有些奇怪,但實際上確實就是字面意思所說的那樣。

從概念上而言,Babel 是一個通用的 JavaScript*-to-JavaScript 的預處理工具(除了 ECMAScript 語言規範及其提案外,也支持非 ECMAScript 的私有語言擴展,例如 Flow、JSX 等),而 TypeScript 是作為 JavaScript 超集的並且 Targeting JavaScript 的編程語言(所以也可以理解為 JavaScript 的語言擴展,但同時具備官方的工具鏈支持)。

所以就概念本身而言,Babel 支持 TypeScript 是無可厚非的。但由於 TypeScript 帶有官方工具支持,並且工具本身具備豐富的編譯選項,因此一定程度上 TypeScript(的官方工具)與 Babel 在一定程度上產生了功能衝突。

關於兩者的集成問題,在 TypeScript 和 Babel 中都有相關討論。

最近,增加對 TypeScript 的支持正在進行中,同時也已經列入到 Babylon 的 README 當中。

不過,實際影響可能十分有限,TypeScript(的官方工具)本身支持了絕大多數 ECMAScript 的特性及其提案,以及私有的擴展如 JSX。同時也包含了 Babel 的絕大多數功能,例如提供了 Transform API 實現自定義的代碼生成方式,甚至還提供了 Language Service Plugin 用來實現自定義語法的編輯器支持。

相關鏈接

  • TypeScript 官網:TypeScript - JavaScript that scales.
  • Babel 官網:Babel · The compiler for writing next generation JavaScript
  • TypeScript 的 GitHub Repo:Microsoft/TypeScript
  • Babel 的 Github Repo:babel/babel
  • Babylon 的 Github Repo:babel/babylon
  • TypeScript 對 Babel 支持的 Tracker:Babel plugin for typescript · Issue #11441 · Microsoft/TypeScript
  • Babel 對 TypeScript 支持的 Tracker:babel-plugin-transform-typescript-strip-types · Issue #5201 · babel/babel
  • Babylon 對 TypeScript 支持的 Tracker:Typescript Plugin · Issue #320 · babel/babylon
  • Babylon 增加對 TypeScript Parser 支持的 PR:WIP: TypeScript parser by andy-ms · Pull Request #523 · babel/babylon
  • Babylon 正式宣布對 TypeScript 功能支持的 Commit:link to contributing [skip ci] · babel/babylon@ed1809c

推薦閱讀:

ThinkJS 3.0 如何實現對 TypeScript 的支持
如何看待 Angular 2.0 使用的 AtScript 是 TypeScript 的超集?
VS Code 1.14更新日誌
TypeScript入門
是時候再給TypeScript一次機會了【譯】

TAG:TypeScript | Babel |