掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
本文轉(zhuǎn)載自微信公眾號(hào)「小姐姐味道」,作者小姐姐養(yǎng)的狗 。轉(zhuǎn)載本文請(qǐng)聯(lián)系小姐姐味道公眾號(hào)。

前端那么多酷炫的東西,真是太好玩了。但是,JavaScript是個(gè)攔路虎,尤其是熟悉了Java之類的強(qiáng)類型檢查語(yǔ)言之后,每次看到j(luò)s都感覺不爽。作為一個(gè)后端,寫JavaScript真的是有一種寫吐了的感覺。萬(wàn)幸現(xiàn)在有了更好的選擇。
為什么要學(xué)習(xí)TypeScript呢?因?yàn)樗恼Z(yǔ)法和Java真的很像。有了這個(gè)東西,就可以擺脫惱人的JavaScript,擁抱前端的技術(shù)棧。
TypeScript是JavaScript的超集。意思就是在ts中可以直接書寫js。在我的第一感覺里,js就像是編譯后的可執(zhí)行文件,而ts就像是Java語(yǔ)言,或者Scala語(yǔ)言等。不過,這也只是類比而已,ts中的很多語(yǔ)法,其實(shí)大多數(shù)是編譯期用的,在真正的js文件里,抹除了很多的信息。
如上圖,ts文件通過tsc編譯器,生成普通的js文件。接下來(lái),就可以使用node命令執(zhí)行這個(gè)普通的js文件。
下面是一段簡(jiǎn)單的ts代碼。是不是和Java很像?
- class Animal {
- public name;
- protected a;
- private b: string;
- constructor(name) {
- this.name = name;
- }
- sayhi() {
- return `my name is ${this.name}`;
- }
- }
- class Cat extends Animal {
- constructor(name) {
- super(name)
- }
- sayhi() {
- return "meow " + super.sayhi()
- }
- static iaAnimal(a) {
- return a instanceof Animal;
- }
- }
- function gen
(name: T): void { - console.log(name.name)
- }
下面簡(jiǎn)單介紹一下一些基本的語(yǔ)法,當(dāng)然了,有些語(yǔ)法是ES6的,但我也把它揉在一塊了。
類型相關(guān)
由于js是一門弱類型的語(yǔ)言,有很多的運(yùn)行時(shí)轉(zhuǎn)換,就不能使用類似于Java一樣的強(qiáng)類型轉(zhuǎn)換方式,所以typescript可以在編譯階段通過語(yǔ)言特性增強(qiáng)一些類型檢查的功能。而在運(yùn)行時(shí),大多數(shù)根本就沒有這樣的判斷,所以ts更像是一個(gè)過程工具。
對(duì)于一門語(yǔ)言來(lái)說,肯定離不開基本數(shù)據(jù)類型和自定義類型。ts提供了一系列的關(guān)鍵字作為特殊類型代號(hào),其他的都好說,唯一讓我有點(diǎn)興趣的是聯(lián)合類型,這非常有趣的一個(gè)特性。
聲明相關(guān)
那什么是declare呢?私以為這個(gè)類似于python中的__init__.py文件,用于暴露一些接口和函數(shù),另外為代碼自動(dòng)補(bǔ)全提供了基本數(shù)據(jù)。
兩個(gè)默認(rèn)的約定。配置了tsconfig.json以后,可以直接執(zhí)行tsc命令進(jìn)行編譯。///三斜杠指令,很丑。
關(guān)于Class
從Java過來(lái)的同學(xué),會(huì)發(fā)現(xiàn)這些概念和Java是類似的,不過ts的語(yǔ)法更加簡(jiǎn)單。
關(guān)于type、interface、class
開發(fā)工具
tsc是typescript的編譯器。如果編譯出錯(cuò),可以指定底層的語(yǔ)法特性。
- tsc --target es6
建議配置在tsconfig.json文件里,會(huì)被自動(dòng)識(shí)別。
- {
- "compilerOptions": {
- "module": "commonjs",
- "outDir": "lib",
- "declaration": true,
- "target":"es6"
- }
- }
vscode,通過.d.ts文件,可以做到自動(dòng)補(bǔ)全和語(yǔ)法檢查。但針對(duì)于復(fù)雜的個(gè)性化配置,還是無(wú)法做到類似idea那樣智能的提示和配置。
由此造成的后果就是,手頭上必須有一份參考文檔,并對(duì)參考文檔的目錄和功能熟悉。在遇到相應(yīng)的配置參數(shù)時(shí),不得不翻閱到相應(yīng)的地方,然后拷貝過來(lái)。這對(duì)于一個(gè)javaer來(lái)說,實(shí)在是太痛苦了。
作者簡(jiǎn)介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個(gè)人微信xjjdog0,歡迎添加好友,進(jìn)一步交流。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流