做者:Danielnode
日期:August 27th, 2018react
原文:devblogs.microsoft.com/typescript/…webpack
今天咱們很高興爲Babel用戶宣佈一些特別的東西。一年前,咱們開始着手發現用戶在使用TypeScript時遇到的最大困難,咱們發現Babel用戶的一個共同問題是嘗試設置好TypeScript 太難了。 緣由一般各不相同,但對於許多開發人員來講,重寫已經正在使用的構建配置多是一項艱鉅的任務。 Babel是一個出色的工具,擁有一個充滿活力的生態系統,經過將最新的JavaScript特性轉換爲舊的運行時和瀏覽器,爲數百萬開發人員提供服 但它不進行類型檢查,咱們的團隊認爲能夠將這種體驗帶到另外一個層次。 雖然TypeScript自己能夠同時執行這兩項操做,但咱們但願在不強制用戶從Babel切換的狀況下更輕鬆地得到該體驗。git
這就是爲何在過去的一年裏咱們與Babel團隊合做,今天咱們很高興聯合宣佈Babel 7如今提供TypeScript支持!github
若是你已經在使用Babel而且你從何嘗試過TypeScript,那麼如今是你的機會,由於它比以往更容易。 至少,您須要安裝TypeScript插件。web
npm install --save-dev @babel/preset-typescript
複製代碼
您可能還想得到TypeScript支持的其餘ECMAScript特性:typescript
npm install --save-dev @babel/preset-typescript @babel/preset-env @babel/plugin-proposal-class-properties @babel/plugin-proposal-object-rest-spread
複製代碼
確保你的.babelrc
中的presets和plugins配置正確:shell
{
"presets": [
"@babel/env",
"@babel/preset-typescript"
],
"plugins": [
"@babel/proposal-class-properties",
"@babel/proposal-object-rest-spread"
]
}
複製代碼
一個使用@babel/cli
編譯的樣例,你僅須要執行:npm
babel ./src --out-dir lib --extensions ".ts,.tsx"
複製代碼
你的文件如今構建並生成到了lib
文件夾中。json
使用TypeScript
檢查類型,須要建立一個tsconfig.json
文件:
{
"compilerOptions": {
// Target latest version of ECMAScript.
"target": "esnext",
// Search under node_modules for non-relative imports.
"moduleResolution": "node",
// Process & infer types from .js files.
"allowJs": true,
// Don't emit; allow Babel to transform files.
"noEmit": true,
// Enable strictest settings like strictNullChecks & noImplicitAny.
"strict": true,
// Disallow features that require cross-file information for emit.
"isolatedModules": true,
// Import non-ES modules as default imports.
"esModuleInterop": true
},
"include": [
"src"
]
}
複製代碼
而後執行tsc
,僅僅就是這樣!tsc
將會對你的.ts
和.tsx
進行類型檢查
隨意添加--watch標誌到任一工具,以便在任何變化時得到即時反饋。 您能夠在此示例存儲庫中查看如何設置更復雜的構建,該存儲庫與Webpack等工具集成。 您也能夠在Babel的在線REPL上使用TypeScript預設。
使用TypeScript編譯器仍然是構建TypeScript的首選方法。 雖然Babel能夠接管編譯/轉換 - 執行諸如擦除類型和重寫最新的ECMAScript功能以在較舊的運行時中工做 - 它沒有內置類型檢查,而且仍然須要使用TypeScript來實現這一點。 所以,即便Babel構建成功,您也可能須要使用TypeScript介入以捕獲類型錯誤。 出於這個緣由,咱們認爲tsc和compiler pipeline周圍的工具仍然能夠爲大多數項目提供最好集成和一致的體驗。
所以,若是您已經在使用TypeScript,那麼這對您來講可能沒什麼變化。 可是,若是您已經在使用Babel,或者對Babel生態系統感興趣,並但願得到TypeScript的好處,例如捕獲拼寫錯誤,錯誤檢查以及您可能在Visual Studio和Visual Studio等中看到的編輯體驗 代碼,這是給你的!
正如咱們上面提到的,用戶應該注意的第一件事是Babel不會對TypeScript代碼執行類型檢查;它只會轉換你的代碼,不管是否存在類型錯誤,它都會編譯。雖然這意味着Babel不會像讀取.d.ts文件那樣作並確保你的類型兼容,但可能你會想要一些工具來作到這一點,因此你仍然須要TypeScript。這能夠在後臺做爲單獨的tsc --watch任務完成,也能夠是構建中的lint / CI步驟的一部分。幸運的是,經過正確的編輯器支持,您甚至能夠在保存以前發現大多數錯誤。
其次,有些結構Babel 7沒有正確的編譯。具體來講,
x as Foo
)。這些遺漏主要基於Babel的單文件發射架構中的技術限制。咱們相信大多數用戶會發現這種體驗是徹底能夠接受的。要確保TypeScript能夠調出其中的一些遺漏,您應該確保TypeScript使用--isolatedModules標誌。
您能夠在發佈博客文章中閱讀Babel方面的詳細信息。 咱們很高興咱們有機會與Babel團隊的人們合做,如Henry Zhu,Andrew Levine,Logan Smyth,Daniel Tschinder,James Henry,Diogo Franco,Ivan Babak,NicolòRibaudo,Brian Ng和Vladimir Kurchatkin。 咱們甚至有機會加速Babylon,Babel的解析器,並幫助調整James Henry在typescript-eslint-parser上的工做,該解析器如今支持Prettier's TypeScript。 若是咱們遺漏沒有提到你,咱們很抱歉,但咱們很感激,咱們感謝全部人們共同投入的幫助!
咱們的團隊將爲TypeScript插件的將來更新作出貢獻,咱們期待爲全部TypeScript用戶帶來出色的體驗。 展望將來,咱們很樂意聽到您對Babel中這種新TypeScript支持的反饋,以及咱們如何使其更易於使用。 在Twitter上@typescriptlang或下面的評論中給咱們一個聲音。
快樂的黑客!
Babel+TypeScript以及其它工具的配置參考
react-webpack-typescript-babel
TypeScript With Babel: A Beautiful Marriage
關注微信公衆號,發現更多精彩內容
![]()