新消息:Node.js 終于內(nèi)置 TypeScript 支持
令人興奮的消息!Node.js 終于迎來了原生的 TypeScript 支持!
是的,現(xiàn)在你可以在 Node.js 中直接使用 TypeScript 類型了。
看來我可以把 typescript 和 ts-node 扔進(jìn)垃圾桶了。
? 在此之前:
Node.js 只支持 JavaScript 文件。
像下面這樣的代碼根本無法運(yùn)行:
嘗試運(yùn)行時(shí),你會(huì)得到一個(gè)令人不悅的錯(cuò)誤提示:
我們以前的最佳選擇是安裝 TypeScript 并使用 tsc 進(jìn)行編譯。
數(shù)百萬開發(fā)者認(rèn)為這已經(jīng)是一個(gè)不錯(cuò)的選擇:
但這很麻煩——每次都要安裝相同的舊包,并反復(fù)輸入相同的命令。
額外的編譯步驟、處理 TypeScript 配置等問題都很令人沮喪,特別是當(dāng)我們只是想做一些測(cè)試時(shí)。
正因如此,ts-node 出現(xiàn)了,試圖解決這些問題——但它仍然不夠完美。
我們可以直接運(yùn)行 TypeScript 文件了:
甚至可以像使用 node 命令一樣隨時(shí)啟動(dòng)交互式會(huì)話:
每個(gè)人都很喜歡它:
但它仍然是一個(gè)額外的依賴項(xiàng),而且我們?nèi)匀恍枰惭b TypeScript。
我們還必須注意一些更細(xì)微的復(fù)雜性,比如如何使用 ts-node 處理 ES 模塊時(shí)的 --esm 標(biāo)志。
? 現(xiàn)在:
隨著 Node.js 的全新升級(jí),這一切都改變了:
- 原生內(nèi)置 TypeScript 支持。
- 無需依賴任何額外的包。
- 無需中間文件和模塊配置。
現(xiàn)在,像 Prettier、Next.js 和 Webpack 這樣的我們喜愛的 JS 工具可以擁有更安全和更具智能提示的配置文件。
好吧,幾乎沒有人會(huì)把 Webpack 列入他們最喜愛的工具列表,但不管怎樣……
看看已經(jīng)有類似的 Pull Request 來支持 Prettier 的 prettier.config.ts 了——這要?dú)w功于這一新發(fā)展,他們將邁出更大的步伐。
背后的工作原理是什么?
對(duì) TypeScript 的支持將是漸進(jìn)的,所以目前它只支持類型——你還不能使用像枚舉這樣的更典型的 TypeScript 特性(不過誰現(xiàn)在還用枚舉呢)。
它使用 @swc/wasm-typescript 工具在內(nèi)部去除 TypeScript 文件中的所有類型。
所以這段代碼:
會(huì)被轉(zhuǎn)換成這樣:
如何在 Node.js 中開始使用 TypeScript
正如我之前提到的,這是一個(gè)早期的開始,所以它仍然是實(shí)驗(yàn)性的,目前你需要使用 --experimental-strip-types 標(biāo)志:
node --experimental-strip-types index.ts
這將在即將發(fā)布的版本中得到支持。
最后的想法
內(nèi)置 TypeScript 是一個(gè)重大的舉措,使得 Node.js 成為 JavaScript 開發(fā)者更加愉快的平臺(tái)。我肯定會(huì)使用這個(gè)功能。
盡管支持還不如 Bun 或 Deno 那樣無縫,但它對(duì)整個(gè) JavaScript 生態(tài)系統(tǒng)產(chǎn)生了深遠(yuǎn)的影響,因?yàn)?Node 仍然是目前最受歡迎的 JS 后端框架。