TypeScript 爲什麼能成爲前端圈新寵?

從事前端開發十餘年,我親自見證了 Atwood 定律,那就是“任何能用 JavaScript 實現的應用,最終都會用 JavaScript 實現。”

從移動終端到後端服務,從 IoT 到神經網絡,JavaScript 幾乎無處不在。如此廣闊的應用領域,自然對語言的安全性、健壯性和可維護性有更高的要求。

儘管 ES 標準在近幾年有了長足的進步,但在類型檢查方面依然無所建樹。你是否經常遇到這樣的場景:

  • 你調用一個別人寫的函數,很不幸,這個傢伙沒有留下任何註釋,爲了搞清楚參數類型,你只能硬着頭皮去看裏面的邏輯。
  • 爲了保證代碼的健壯性,你很有責任心,對一個函數的輸入參數進行各種假設,最終給老闆盛上了一碗香噴噴的意大利麪。
  • 領導看好你,讓你維護一個重要的底層類庫,你殫精竭慮,優化了一個參數類型,但不知道有多少處引用,在提交代碼前,是否感到脊背發涼?
  • 明明定義好了接口,可一聯調就報錯了——“TypeError: Cannot read property ‘length’ of undefined”,於是你怒氣衝衝地去找後端理論:“嘿,哥們兒!這個字段是數組!這個字段是數組!這個字段是數組!”

以上情況歸根結底,是因爲 JavaScript 是一門動態弱類型語言, 對變量的類型非常寬容,而且不會在這些變量和它們的調用者之間建立結構化的契約。如果你長期在沒有類型約束的環境下開發,就會造成“類型思維”的缺失,養成不良的編程習慣,這也是做前端開發的短板之一,值得我們警醒。

幸運的是,TypeScript 的出現很好地彌補了 JavaScript 在靜態類型檢查方面的缺陷。它爲 JavaScript 提供了良好的類型檢查支持,而且能夠編譯成標準的 JavaScript。

目前, Angular 已經使用 TypeScript 重構了代碼,另一大前端框架 Vue 的新版本也將使用 TypeScript 進行重構。在可預見的未來,TypeScript 將成爲前端開發者必須掌握的開發語言之一。

那麼, TypeScript 究竟有哪些特性使得它成爲大家的”剛需“?

第一,類型檢查。TypeScript 會在編譯代碼時進行嚴格的靜態類型檢查,這意味着你可以在編碼階段發現可能存在的隱患,而不必把它們帶到線上。
第二,語言擴展。TypeScript 會包括來自 ES 6 和未來提案中的特性,比如異步操作和裝飾器;也會從其他語言借鑑某些特性,比如接口和抽象類。
第三,工具屬性。TypeScript 能夠編譯成標準的 JavaScript,可以在任何瀏覽器、操作系統上運行,無需任何運行時的額外開銷。從這個角度上講,TypeScript 更像是一個工具,而不是一門獨立的語言。

除此之外,TypeScript 還可以幫助團隊重塑“類型思維”,接口提供方將被迫去思考 API 的邊界,他們將從代碼的編寫者蛻變爲代碼的設計者。

如何高效學習TypeScript?

當 TypeScript 還是 1.0 版本的時候,我們在團隊內部就開始用它編寫一些UI框架,到如今現在 TypeScript 已經3.0+了,功能十分強大,在這個過程中,我們踩了一些坑,發現了一些大家學習實踐時最容易碰到的問題,比如:

  • 初次接觸 TypeScript,很多概念和規則理解起來很難,比如接口、泛型、各種高級類型以及類型兼容性規則等等,到底怎麼學才能快速上手?
  • TypeScript 工程如何配置?尤其是 tsconfig.json 配置項很多,怎麼才能梳理清楚?
  • TypeScript 如何與現有開發生態如何結合?如何從 JavaScript 過渡到 TypeScript?與主流開發框架的結合實踐有哪些?各類構建工具如何集成?

針對以上問題,我特地整理了一個 TypeScript 核心知識框架圖,內容涵蓋 TypeScript 的語法基礎、工程配置以及四大典型前端應用的開發實戰,幫助大家快速上手,對需要學習的知識點有個全局瞭解。

想要學好 TypeScript ,在深入理解其核心概念、熟練進行工程配置的基礎上,還要真正應用到實際項目開發中。

所以我和極客時間一同開設了《TypeScript開發實戰》這門課,我會爲你詳細解讀 TypeScript 的每個特性,它能解決什麼問題?與 JavaScript 的區別在哪裏?一步步帶你重塑“類型思維”,讓你最終能夠熟練使用 TypeScript 進行實際項目的開發。

我是誰?

我是樑宵,目前在搜狗營銷事業部擔任高級架構師,負責廣告和運營平臺業務,主導了相關 UI 框架及可視化工具的研發,同時具有豐富的企業級中後臺開發經驗。

在工作之餘,我還翻譯了《hapi.js 實戰》《JavaScript ES6 函數式編程入門經典》等書籍。

我會如何講解 TypeScript?

第一步,是把 TypeScript 的基本概念和語法講清楚,爲你破除後面的障礙。

第二步,學習了語法仍然做不好項目嗎?別擔心,在這一部分我將爲你趟平它。我會詳解實際開發中涉及的問題,比如怎麼配置 tsconfig.json,怎麼引入讓第三方類庫兼容 TypeScript,怎麼選擇加載器、lint 工具、單測工具等等。

第三步,我將講解 TypeScript 如何結合最主流的兩大框架 React 和 Vue,此外還會講解 Node.js 服務端開發,以及從舊有 JavaScript 項目遷移到 TypeScript 的應該遵循的策略。

你能收穫什麼?

1.重塑“類型思維”,提升編程素養。

學完這門課程後,我希望能在你的腦中播下“類型思維”的種子。因爲思維方式決定了編程習慣,編程習慣奠定了工程質量,工程質量劃定了能力邊界。面對越來越複雜的前端應用,TypeScript 所提供的思維方法,能夠讓你在未來的開發中長期受益。

2.系統掌握 TypeScript 核心技術

我會在每個篇章結束後,基於課程進度及內容,讀者的學習反饋,獨家總結「核心知識圖譜」,幫你深入理解 TypeScript 核心概念,熟練進行 TypeScript 工程配置;課程完結後,我將梳理出一套3張精細、全面的圖譜,贈送給大家。

3.玩轉四種典型前端應用的開發

學習的目的是爲了付諸實踐,我會在實戰篇中,以表單查詢、數據庫操作與文件下載、組件開發爲例,手把手帶你玩轉 TypeScript 在 React、Vue、以及 Node.js 中的開發實踐,並給你展示從 JavaScript 到 TypeScript 的漸進式遷移策略,完成實際項目到改造過程。

訂閱福利

1.早鳥 ¥99,原價 ¥129,結算時輸入優惠口令**「ILOVETS66」再減 10 元,到手僅 ¥89。優惠口令僅限前 200 個名額**有效。

2.訂閱課程後,可以獲得作者親自整理的高清版「TypeScript 核心知識框架圖」+「2019 GMTC 大會 PPT 合集」,獲取方式:“極客時間”服務號後臺回覆「TS」。
戳我訂閱

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章