說說你對 typescript的理解?與javascript的區(qū)別?
一、是什么
TypeScript是JavaScript的類型的超集,支持ES6語法,支持面向?qū)ο缶幊痰母拍?,如類、接口、繼承、泛型等
超集,不得不說另外一個概念,子集,怎么理解這兩個呢,舉個例子,如果一個集合A里面的的所有元素集合B里
面都存在,那么我們可以理解集合B是集合A的超集,集合A為集合B的子集

其是一種靜態(tài)類型檢查的語言,提供了類型注解,在代碼編譯階段就可以檢查出數(shù)據(jù)類型的錯誤
同時擴(kuò)展了JavaScript的語法,所以任何現(xiàn)有的JavaScript程序可以不加改變的在TypeScript下工作
為了保證兼容性,typescript在編譯階段需要編譯器編譯成純Javascript來運(yùn)行,是為大型應(yīng)用之開發(fā)而設(shè)
計的語言,如下:
tsx文件如下:

編譯文件后:

二、特性
typescript的特性主要有如下:
·類型批注和編譯時類型檢查:在編譯時批注變量類型
·類型推斷:ts中沒有批注變量類型會自動推斷變量的類型
·類型擦除:在編譯過程中批注的內(nèi)容和接口會在運(yùn)行時利用工具擦除
·接口:ts中用接口來定義對象類型
枚舉:用于取值被限定在一定范圍內(nèi)的場景
·Mixin:可以接受任意類型的值
·泛型編程:寫代碼時使用一些以后才指定的類型
·名字空間:名字只在該區(qū)域內(nèi)有效,其他區(qū)域可重復(fù)使用該名字而不沖突
·元組:元組合并了不同類型的對象,相當(dāng)于一個可以裝不同類型數(shù)據(jù)的數(shù)組
類型批注
通過類型批注提供在編譯時啟動類型檢查的靜態(tài)類型,這是可選的,而且可以忽略而使用JavaScript常規(guī)的動態(tài)
類型

對于基本類型的批注是number、bool和string,而弱或動態(tài)類型的結(jié)構(gòu)則是any類型
類型推斷
當(dāng)類型沒有給出時,TypeScript編譯器利用類型推斷來推斷類型,如下:

變量str被推斷為字符串類型,這種推斷發(fā)生在初始化變量和成員,設(shè)置默認(rèn)參數(shù)值和決定函數(shù)返回值時
如果由于缺乏聲明而不能推斷出類型,那么它的類型被視作默認(rèn)的動態(tài)any類型
接口
接口簡單來說就是用來描述對象的類型數(shù)據(jù)的類型有number、
null、string等數(shù)據(jù)格式,對象的類型就
是用接口來描述的

三、區(qū)別
·ypeScript 是 JavaScript 的超集,擴(kuò)展了 JavaScript 的語法
4TypeScript可處理已有的JavaScript代碼,并只對其中的TypeScript代碼進(jìn)行編譯
· TypeScript 文件的后綴名 .ts (.ts, .tsx,.dts),JavaScript 文件是 .js
·在編寫TypeScript的文件的時候就會自動編譯成js文件
更多的區(qū)別如下圖所示:


浙公網(wǎng)安備 33010602011771號