<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          TypeScript 的演進之路

          共 6245字,需瀏覽 13分鐘

           ·

          2023-07-09 01:11

          TypeScript 是由微軟進行開發(fā)和維護的一門開源的編程語言,它是 JavaScript 的嚴格語法超集,提供了可選的靜態(tài)類型檢查。 本文將探索 TypeScript 的發(fā)展歷程、它對 JavaScript 生態(tài)系統(tǒng)的影響,以及它如何成為開發(fā)人員的必備工具。

          發(fā)展歷程

          2010:設計背景

          TypeScript 的發(fā)展可以追溯到 2010 年, C# 和 Turbo Pascal 的創(chuàng)建者 Anders Hejlsberg 開始思考如何改進 JavaScript 的開發(fā)體驗。在那個時候,JavaScript 還沒有成為主流的開發(fā)語言,而且缺乏一些關鍵的特性,比如模塊化和類型系統(tǒng)。因此,Anders Hejlsberg 決定創(chuàng)建一種新的語言,它可以在保留 JavaScript 精髓的同時,增加一些用來構建大型應用的特性。

          c5fe5fd3718f0902064be66c880264cf.webp

          在接下來的幾年里,微軟團隊投入了大量的時間和精力來開發(fā) TypeScript,并于 2012 年將其首次公開發(fā)布。

          2012:正式發(fā)布

          TypeScript 于 2012 年 10 月正式發(fā)布。TypeScript 發(fā)布的最初動機就是解決 JavaScript 的缺點,處理復雜JavaScript代碼帶來的挑戰(zhàn)使他們需要自定義工具來簡化組件開發(fā)流程。

          JavaScript 作為一種動態(tài)類型的語言,由于缺乏類型檢查而容易出現(xiàn)運行時錯誤。TypeScript 旨在提供可選的靜態(tài)類型和面向對象的編程功能,使開發(fā)人員更輕松地構建和維護復雜的應用。

                
                function?greet?(name:?string):?string?{?
          ??return??"Hello,?"?+?name;?
          }

          由于 TypeScript 是 JavaScript 的嚴格超集,因此它保留了與現(xiàn)有 JavaScript 代碼的兼容性。TypeScript 編譯器 ( tsc) 將 TypeScript 代碼轉換為 JavaScript,使其可以在任何支持 JavaScript 的環(huán)境中運行。這確保了開發(fā)人員可以在項目中逐漸采用 TypeScript,而無需重寫全部代碼。

          在發(fā)布后不久,知名的開源倡導者和開發(fā)者 Miguel de Icaza 對這門語言表示認可,但批評了其糟糕的 IDE 支持性,當時僅有微軟的 Visual Studio IDE 支持其代碼,但此 IDE 當時未在 Linux 和 OS X 操作系統(tǒng)上發(fā)布。

          2012-2015:受到關注

          TypeScript 早年在開發(fā)者社區(qū)中的采用率穩(wěn)步增長。2014 年 Angular 2 的發(fā)布標志著 TypeScript 的一個重要里程碑,因為流行的前端框架選擇 TypeScript 作為其默認語言。這一決定幫助 TypeScript 獲得了可信度,并引起了其他項目和組織的興趣增加。

          dc2261a497ba2cf692adbcbc53648718.webp

          在此期間,TypeScript 經(jīng)歷了數(shù)次重要的版本更新,引入了新功能和改進語言特性。開發(fā)者對 TypeScript 的反響大多是積極的,他們認識到 TypeScript 在類型安全、更好的工具支持和代碼可維護性方面帶來的價值。

                
                interface?Person?{
          ??firstName:?string;
          ??lastName:?string;
          }

          function?fullName(person:?Person):?string?{
          ??return?person.firstName?+?"?"?+?person.lastName;
          }

          let?user?=?{?firstName:?"Jane",?lastName:?"Doe"?};

          console.log(fullName(user));

          在這幾年中,有以下重要里程碑:

          • 2013年發(fā)布的 TypeScript 0.9 增加了對泛型的支持。
          • 2014年在微軟開發(fā)者大會上發(fā)布 TypeScript 1.0。
          • 2014年7月,開發(fā)團隊發(fā)布了全新的 TypeScript 編輯器,聲稱其性能提高了5倍。同時,代碼托管由 CodePlex 遷移至 GitHub。

          2015–2018:成為主流

          隨著 TypeScript 越來越受歡迎,主要的庫和框架開始為該語言提供一流的支持。React、Vue 和其他流行項目在其包中添加了 TypeScript 聲明,使開發(fā)人員能夠從 TypeScript 的類型檢查和自動完成功能中受益。這反過來又鼓勵更多的開發(fā)人員在他們的項目中采用 TypeScript,創(chuàng)建了一個積極的反饋循環(huán),進一步推動 TypeScript 的增長。

          e8f6e21f0a2faec965145cb8fcdd00c0.webp

          在此期間,TypeScript 的類型系統(tǒng)也發(fā)生了重大改進,引入了聯(lián)合類型、交集類型和映射類型等功能。這些增強功能使開發(fā)人員能夠表達復雜的類型關系,從而使 TypeScript 更加強大和靈活。

                
                type?Admin?=?{
          ??role:?"admin";
          ??permissions:?string[];
          };

          type?User?=?{
          ??role:?"user";
          ??username:?string;
          };

          type?SuperUser?=?Admin?&?User;

          const?superUser:?SuperUser?=?{
          ??role:?"admin",
          ??permissions:?["create",?"read",?"update",?"delete"],
          ??username:?"superadmin",?};

          function?getRole(user:?Admin?|?User):?string?{?return?user.role;?}

          console.log(getRole(superUser));

          2018-至今:逐漸成熟

          近年來,TypeScript 已經(jīng)成熟成為現(xiàn)代 Web 開發(fā)的主要工具。由于它結合了類型安全性、改進的工具以及與 JavaScript 生態(tài)系統(tǒng)的兼容性,該語言已在開發(fā)人員和組織中廣泛采用。

          微軟的 TypeScript 團隊繼續(xù)迭代該語言,定期發(fā)布引入新功能和增強功能的版本。與此同時,更廣泛的 JavaScript 社區(qū)已經(jīng)接受了 TypeScript,Next.js、NestJS 和 GraphQL 等流行項目提供了開箱即用的一流 TypeScript 支持。

                
                import?React?from?"react";
          import?{?GetServerSideProps?}?from?"next";
          import?{?useRouter?}?from?"next/router";

          interface?PostProps?{
          ??title:?string;
          ??content:?string;
          }

          export?default?function?Post({?title,?content?}:?PostProps)?{
          ??const?router?=?useRouter();

          ??//?Anyone?else?hate?this?pattern?
          ??if?(router.isFallback)?{
          ????return?<div>Loading...</div>;
          ??}
          ??/
          /?I?can't?wait?for?Suspense...

          ??return?(
          ????<div>
          ??????<h1>{title}</
          h1>
          ??????<p>{content}</p>
          ????</
          div>
          ??);
          }

          export?const?getServerSideProps:?GetServerSideProps<PostProps>?=?async?(context)?=>?{
          ??const?{?id?}?=?context.params;
          ??const?response?=?await?fetch(`https://api.example.com/posts/${id}`);
          ??const?post?=?await?response.json();

          ??return?{
          ????props:?{
          ??????title:?post.title,
          ??????content:?post.content,
          ????},
          ??};
          };

          重要里程碑

          最后來看看 TypeScript 演變的時間線,重點介紹關鍵里程碑和在其發(fā)展中發(fā)揮重要作用的個人。

          2010:初步發(fā)展

          • Anders Hejlsberg 是 C# 和 Turbo Pascal 的創(chuàng)建者,領導 Microsoft 的 TypeScript 項目,致力于語言和編譯器的研究。

          2012:TypeScript 正式發(fā)布

          • Microsoft 于 2012 年 10 月正式發(fā)布 TypeScript。

          2013:TypeScript 0.9 發(fā)布

          • 第一個公開版本 TypeScript 0.9 引入了可選的靜態(tài)類型、泛型等功能。

          2014:Angular 2 選擇 TypeScript

          • Brad Green 和 Google 的 Angular 團隊選擇 TypeScript 作為 Angular 2 的默認語言。
          • TypeScript 在開發(fā)者社區(qū)中贏得了贊譽和關注。
          • 2014年的微軟開發(fā)者大會發(fā)布了 TypeScript 1.0。
          • Visual Studio 2013 Update 2為TypeScript提供了原生支持。
          • 2014年7月,開發(fā)團隊發(fā)布了新的TypeScript編輯器,聲稱其性能提高了5倍。同時,代碼托管由CodePlex遷移至GitHub。

          2015:TypeScript 1.5 發(fā)布

          • TypeScript 1.5 發(fā)布,該版本引入了模塊別名、裝飾器和 ES6 風格的生成器等新特性,并改進了類型推斷和類型注解功能。

          2016:TypeScript 2.0 發(fā)布

          • TypeScript 2.0 發(fā)布,引入了不可空類型、控制流分析以及類型系統(tǒng)的其他增強功能。
          • Daniel Rosenwasser 加入 Microsoft 的 TypeScript 團隊,為該語言做出貢獻并與社區(qū)互動。
          • Google 宣布將 TypeScript 作為 Angular 框架的官方語言。這一決定使得越來越多的開發(fā)者開始采用 TypeScript 來構建他們的應用程序。同時,TypeScript 也開始廣泛地應用于其它的框架和庫中。

          2017:React 和 Vue 的一流支持

          • React 和 Vue 將 TypeScript 聲明添加到其包中,為 TypeScript 開發(fā)人員提供一流的支持。
          • Vue 的創(chuàng)建者尤雨溪成為 TypeScript 及其優(yōu)點的倡導者。
          • TypeScript 2.5 發(fā)布,該版本引入了可選鏈式操作符和 null 判斷符這兩個新特性,并對 JSX 語法進行了改進和優(yōu)化。

          2018:TypeScript 3.0 發(fā)布

          • TypeScript 3.0 發(fā)布,該版本引入了許多新特性,例如提取元組類型、類型參數(shù)默認推斷、未聲明屬性檢查等。此外,TypeScript 3.0 還提高了類型檢查的性能和準確性。
          • TypeScript 得到了開發(fā)人員和組織的廣泛采用,成為現(xiàn)代 Web 開發(fā)的主要內(nèi)容。

          2019:TypeScript 3.7 發(fā)布

          • TypeScript 3.7 發(fā)布,引入了可選鏈和空值合并,進一步增強了語言的表達能力和安全性。

          2020:TypeScript 4.0 發(fā)布

          • Next.js、NestJS 和其他流行項目提供一流的開箱即用的 TypeScript 支持。
          • Next.js 的創(chuàng)建者 Guillermo Rauch 和 NestJS 的創(chuàng)建者 Kamil Mysliwiec 在項目中推廣 TypeScript 的使用。
          • TypeScript 4.0 發(fā)布,該版本引入了諸多新特性,包括可變元組類型、協(xié)變數(shù)組展開、類屬性訪問修飾符等。

          2021–2023:持續(xù)增長、逐漸成熟

          • Microsoft 的 TypeScript 團隊和更廣泛的 JavaScript 社區(qū)繼續(xù)改進和迭代該語言。
          • 對于處理復雜 Web 應用的開發(fā)人員來說,TypeScript 仍然是一種流行且必不可少的工具。
          • TypeScript 5.0 發(fā)布,引入了裝飾器、速度內(nèi)存和包大小優(yōu)化等。

          小結

          從 2012 年問世到目前成為開發(fā)人員的必備工具,TypeScript 已經(jīng)走過了漫長的道路。它與流行的庫和框架的集成、持續(xù)改進和廣泛采用證明了它在生態(tài)系統(tǒng)中的價值。

          如今,TypeScript 結合了類型安全、改進的工具以及與 JavaScript 生態(tài)系統(tǒng)的兼容性,使其成為開發(fā)復雜 Web 應用的寶貴工具。

          往期推薦

          ECMAScript 2023 正式發(fā)布,有哪些新特性?

          10個開源微信小程序實戰(zhàn)項目,yyds!

          前端框架新寵 Svelte 4.0 正式發(fā)布!

          Nuxt 3.6 正式發(fā)布!

          React Native 0.72 正式發(fā)布!

          高中生打破React性能極限,將React性能提升70%!

          瀏覽 81
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文在线A√在线字幕 | 一级a性色生活片久久无 | 肏逼网址 | 五月综合色网 | 国产毛片基地 |