TypeScript 的理解?與 JavaScript 的區別?


 

 

一、是什么

TypeScript 是 JavaScript 的類型的超集,支持ES6語法,支持面向對象編程的概念,如類、接口、繼承、泛型等

超集,不得不說另外一個概念,子集,怎么理解這兩個呢,舉個例子,如果一個集合A里面的的所有元素集合B里面都存在,那么我們可以理解集合B是集合A的超集,集合A為集合B的子集

 

 

其是一種靜態類型檢查的語言,提供了類型注解,在代碼編譯階段就可以檢查出數據類型的錯誤

同時擴展了JavaScript 的語法,所以任何現有的JavaScript 程序可以不加改變的在 TypeScript 下工作

為了保證兼容性,typescript在編譯階段需要編譯器編譯成純Javascript來運行,是為大型應用之開發而設計的語言,如下:

tsx文件如下:

const hello : string = "Hello World!"
console.log(hello)

編譯文件后:

const hello = "Hello World!"
console.log(hello)

二、特性

typescript的特性主要有如下:

  • 「類型批注和編譯時類型檢查」 :在編譯時批注變量類型
  • 「類型推斷」:ts中沒有批注變量類型會自動推斷變量的類型
  • 「類型擦除」:在編譯過程中批注的內容和接口會在運行時利用工具擦除
  • 「接口」:ts中用接口來定義對象類型
  • 「枚舉」:用於取值被限定在一定范圍內的場景
  • 「Mixin」:可以接受任意類型的值
  • 「泛型編程」:寫代碼時使用一些以后才指定的類型
  • 「名字空間」:名字只在該區域內有效,其他區域可重復使用該名字而不沖突
  • 「元組」:元組合並了不同類型的對象,相當於一個可以裝不同類型數據的數組
  • ...

類型批注

通過類型批注提供在編譯時啟動類型檢查的靜態類型,這是可選的,而且可以忽略而使用JavaScript常規的動態類型

function Add(left: number, right: number): number {
return left + right;
}

對於基本類型的批注是numberboolstring,而弱或動態類型的結構則是any類型

類型推斷

當類型沒有給出時,TypeScript編譯器利用類型推斷來推斷類型,如下:

let str = 'string'

變量str被推斷為字符串類型,這種推斷發生在初始化變量和成員,設置默認參數值和決定函數返回值時

如果由於缺乏聲明而不能推斷出類型,那么它的類型被視作默認的動態any類型

接口

接口簡單來說就是用來描述對象的類型 數據的類型有numbernullstring等數據格式,對象的類型就是用接口來描述的

interface Person {
name: string;
age: number;
}

let tom: Person = {
name: 'Tom',
age: 25
};

三、區別

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

更多的區別如下圖所示:

 

 

參考文獻

  • https://mp.weixin.qq.com/s/ISYWHgLkvsLgM-ky-So5dw


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM