當 JS 工程師遇到了 TypeScript 會發生什麼?

来源:https://www.cnblogs.com/shiyanlou/archive/2020/05/12/12877832.html
-Advertisement-
Play Games

一、“前浪” JavaScript 2007年 Jeff Atwood 在他的博客里提出了著名的 Atwood 定律,即“任何能夠用 JavaScript 實現的應用系統,最終都必將用 JavaScript 實現。” JavaScript 的強大毋庸置疑,十餘年的時間早已驗證了這一點:語法結構簡單、 ...


圖片

一、“前浪” JavaScript

2007年 Jeff Atwood 在他的博客里提出了著名的 Atwood 定律,即“任何能夠用 JavaScript 實現的應用系統,最終都必將用 JavaScript 實現。”

JavaScript 的強大毋庸置疑,十餘年的時間早已驗證了這一點:語法結構簡單、萬物皆可對象、前後端通吃、單線程……這些特點使它幾乎無處不在。

正因為它的應用領域之廣,對這門語言的安全性、可維護性等方面的要求日漸拔高,可偏偏“萬物皆可對象”的特點,又使得它註定是一門動態弱類型的編程語言,於是乎使用 JavaScript的工程師們,他們經常會碰到這麼一種情況:

<script>
  function getLength(str) {
    return str length;
  }
  console.log("1.正在的代碼執行");
  console.log("2.開始函數");
  getLength("abc"); //正確的調用
  getLength(); //錯誤的調用(IDE並不會報錯)
  //當上面的代碼報錯後,後續所有的代碼都無法正常執行了
  console.log("3.調用結束");
<script>

在 JavaScript 里編譯以上代碼時,不會出現報錯,可在瀏覽器運行時,就會出現以下畫面↓↓

圖片

出現這一情況的原因就在於:JavaScript 對我們傳入的參數,不會進行任何限制。

二、“後浪” TypeScript

今年的五四,B站的《後浪》刷了屏,一周了熱度也沒算完全消退。

儘管 JavaScript 這一“前浪”著實優秀,卻也有著不可避免的限制和缺陷,在這種情況下,“後浪” TypeScript 出現了,它既能完美融合 JavaScript 已有的優點和特點,也在此基礎上,又增加了類型約束。

為什麼說 JS 工程師遇到了 TypeScript 會擁有超能力呢?接下來我們將通過課程《TypeScript 基礎入門》的第一章,讓你初步瞭解“後浪” TypeScript。

三、初見 TypeScript

TypeScript 是 JavaScript 的一個超集,他們兩個之間有非常深入的聯繫,所以在學習 TypeScript 之前,你需要學習 JavaScript 相關教程。在本實驗我們將會對 TypeScript 進行簡單的介紹並初步使用它。

知識點

  • TypeScript 簡介
  • 為何選擇 TypeScript
  • 安裝使用 TypeScript

TypeScript 簡介

什麼是TypeScript?

TypeScript 是一種由微軟開發的自由和開源的編程語言。它是 JavaScript 的一個超集,而且本質上向這個語言添加了可選的靜態類型和基於類的面向對象編程。它擴展了 JavaScript 的語法,所以任何現有的 JavaScript 程式可以不加改變的在 TypeScript 下工作。TypeScript 是為大型應用之開發而設計,而編譯時它產生 JavaScript 以確保相容性。

TypeScript 與 JavaScript 的區別

  1. TypeScript 是 JavaScript 的超集,擴展了 JavaScript 的語法。
  2. TypeScript 可處理已有的 JavaScript 代碼,並只對其中的 TypeScript 代碼進行編譯。
  3. TypeScript 文件的尾碼名 .ts (.ts,.tsx,.dts),JavaScript 文件是 .js。
  4. 在編寫 TypeScript 的文件的時候就會自動編譯成 js 文件。

用一張表格來更清晰的觀察兩者的區別:

圖片

為何選擇 TypeScript

  1. TypeScript 增加了代碼的可讀性和可維護性
  2. 新增了其他語言的語法,比如 Class(類)、Interface(介面)、Generics(泛型)、Enums(枚舉)等。
  3. TypeScript 擁抱了 ES6 規範
  4. 相容很多第三方庫,即使第三方庫不是用 TypeScript 寫的,也可以編寫單獨的類型文件供 TypeScript 讀取。
  5. TypeScript 擁有活躍的社區

更值得一提的是,TypeScript 在開發時就能給出編譯錯誤,而 JavaScript 錯誤則需要在運行時才能暴露。作為強類型語言,你可以明確知道數據的類型,代碼可讀性極強,幾乎每個人都能理解。TypeScript 被很多業界大佬使用,像 Asana、Circle CL 和 Slack 這些公司都在用 TypeScript。

安裝使用 TypeScript

打開終端 terminal 輸入全局安裝命令:

cnpm install -g typescript

新建一個文件index.ts,輸入以下內容:

console.log("hello world");

var a: string = "2"; //這是ts寫法,暫時不需要掌握,後續會講到
在終端輸入tsc index.ts編譯文件,編譯成功則會生成一個同名的 js 文件。

圖片

生成的 js 文件里則將 ts 語法轉換成了 js 語法。

四、總結

本小節我們學習了以下知識點:

  • TypeScript 簡介
  • 為何選擇 TypeScript
  • 安裝使用 TypeScript

我相信你已經對 TypeScript 有了一個初步瞭解,接下來我們將會對 TypeScript 進行進一步學習。後續還有以下章節等著你來掌握:

  • 基本數據類型
  • 接囗
  • 類(Class)
  • 函數
  • 模塊
  • 命名空間

登陸實驗樓官網,搜索《JavaScript 基礎入門》《TypeScript 基礎入門》,一起擁抱 TypeScript,做一個擁有超能力的JS 工程師!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redis的字典使用哈希表作為底層實現,一個哈希表中可以有多個哈希表節點,而每個哈希節點就保存在字典中的一個鍵值對。 redis字典所用的哈希表由disht結構定義。 typedef struct dictht{ dictEntry **table;//哈希表數組 unsigned long siz ...
  • 一、動態規劃界面的大小 1.我們在res的文件夾裡面創建一個新的文件夾large_fragment用來,然後寫一個界面,activity_main.xml文件,用於存儲平板電腦等一些解析度高的界面。也就是說小屏幕使用正常activity_main文件、大屏幕就使用large_fragment文件夾里 ...
  • 一、項目概述 flutter-chatroom是採用基於flutter+dart+chewie+image_picker+photo_view等技術跨端開發仿微信app界面聊天室項目。實現了消息發送/動態gif表情、彈窗、圖片預覽、紅包/朋友圈/小視頻號等功能。 二、技術框架 編碼/技術:Vscod ...
  • layer-list : 簡單來說layer-list就是圖層列表的意思,是用來創建LayerDrawable的,LayerDrawable是DrawableResource的一種,所以,layer-list創建出來的是"圖層列表",也就是一個drawable圖形``` ... ...
  • 最近在學習 SwiftUI ,我一般都是先去學習界面佈局,所以就想著仿寫一下經常使用的軟體的界面,所以先拿微信開刀。因為不想一次性發太多的內容,所以只好將主題分解,一部分一部分地去講,接下來我們一起來學習吧。 ...
  • 1.創建會話cookie: $ .cookie('name','value'); 2.創建到期的cookie,然後7天: $ .cookie('name','value',{到期日:7}); 3.創建有效過期cookie,整個網站: $ .cookie('name','value',{到期:7,路徑 ...
  • js 獲取視頻的總時長: <!DOCTYPE html> <html> <head> <title></title> </head> <body> <video id="videoPlayerNew" src="http://vfx.mtime.cn/Video/2019/03/18/mp4/190 ...
  • ES6-10的整理筆記,僅為梳理知識體系,回頭查閱方便。本節(scope作用域 -- let&const -- Array) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...