TypeScript是由微軟開源的一種JavaScript超集語(yǔ)言,它不僅包含當(dāng)前Javascript的特性桃焕,而且實(shí)現(xiàn)了esnext提案。TypeScript的宗旨是為JavaScript提供可靠的類型檢查欠窒,避免出現(xiàn)意大利面條式的代碼覆旭,在大型的項(xiàng)目中讓源碼更加可控。
優(yōu)勢(shì)劣勢(shì)
TypeScript強(qiáng)類型 IDE支持好 編碼規(guī)范私有標(biāo)準(zhǔn) 使用較少 語(yǔ)法差異小 必須編譯
Javascript官方標(biāo)準(zhǔn) 應(yīng)用廣泛弱類型 IDE支持差
CoffeeScript強(qiáng)類型 高級(jí)特性支持特性es6支持 語(yǔ)法差異大 必須編譯
在TypeScript出現(xiàn)之前岖妄,JavaScript也出現(xiàn)了多種方言型将,但是語(yǔ)法都與JavaScript差異太大,使用門檻過(guò)高荐虐,對(duì)JavaScript第三方庫(kù)不兼容七兜。TypeScript語(yǔ)法與JavaScript相似,入門門檻極低福扬,對(duì)于JavaScript編寫的第三方類庫(kù)通過(guò)提供.d.ts type文件兼容腕铸,目前較為流行的類庫(kù)都可以兼容TypeScript。
JavaScript是弱類型語(yǔ)言铛碑,而且由于語(yǔ)法過(guò)于靈活狠裹,在實(shí)際編碼中很容易導(dǎo)致錯(cuò)誤出現(xiàn),特別是在大型的項(xiàng)目中汽烦。TypeScript很好的避免了這些問(wèn)題涛菠,對(duì)于數(shù)據(jù)描述提供interface,這也是TypeScript的核心所在撇吞。
JavaScript在聲明函數(shù)時(shí)俗冻,參數(shù)沒(méi)有類型,而且返回也沒(méi)有類型牍颈,使用和維護(hù)都帶來(lái)一定的困難迄薄。
functionadd(a, b){returna + b;}
TypeScript則需要聲明函數(shù)的參數(shù)和返回值,在變量初始化的時(shí)候需要聲明類型煮岁,也可以通過(guò)類型推導(dǎo)自動(dòng)聲明讥蔽,相較與JavaScript并沒(méi)有帶來(lái)多大的工作量。
leta =1;letb: number =1;functionadd(a: number, b: number):number{returna + b;}
Typescript的interface可以很方便的聲明數(shù)據(jù)的結(jié)構(gòu)画机,可以通過(guò)?聲明哪些數(shù)據(jù)是可選的冶伞。
interfaceUser{? name: string;? age?: number;}constu: User = {name:'name', age:1};// 正確constu: User = {name:'name'};// 正確constu: User = {name:1};// 錯(cuò)誤提示類型不匹配constu: User = {};// 錯(cuò)誤提示name不存在
在app開發(fā)的過(guò)程中,情況往往比web開發(fā)更加復(fù)雜色罚,而且需要不斷的重構(gòu),所以使用TypeScript是一個(gè)非常不錯(cuò)的選擇账劲。