語(yǔ)法定義了一組用于編寫(xiě)程序的規(guī)則。每一種語(yǔ)言規(guī)范定義了它自己的語(yǔ)法。一個(gè)TypeScript程序是由以下幾個(gè)部分組成:
讓我們先從傳統(tǒng)的“Hello World”的例子開(kāi)始:
var message:string = "Hello World" console.log(message)
在編譯時(shí),它會(huì)生成以下JavaScript代碼:
//Generated by typescript 1.8.10 var message = "Hello World"; console.log(message);
第1行聲明的名稱(chēng)message來(lái)聲明變量。變量是一種在程序中存儲(chǔ)值的機(jī)制。
第2行將變量的值打印到提示符。在這里,控制臺(tái)是指終端窗口。函數(shù)log ()是用來(lái)在屏幕上顯示文本。
讓我們來(lái)看看如何使用Visual Studio Code編譯和執(zhí)行TypeScript程序。按照下面的步驟:
第1步 - 使用.ts擴(kuò)展名保存文件。我們將文件保存為T(mén)est.ts。代碼編輯器會(huì)在您保存代碼時(shí)標(biāo)記代碼中的錯(cuò)誤(如果有的話)。
第2步 - 右鍵單擊VS Code的瀏覽窗格中的“工作文件”選項(xiàng)下的TypeScript文件。選擇“在命令提示符下打開(kāi)”選項(xiàng)。
第3步 - 要編譯文件,請(qǐng)?jiān)诮K端窗口中使用下面的命令:
tsc Test.ts
步驟4 - 該文件被編譯為T(mén)est.js。要運(yùn)行寫(xiě)入的程序,請(qǐng)?jiān)诮K端中輸入以下內(nèi)容:
node Test.js
編譯標(biāo)志讓你可以在編譯過(guò)程中更改編譯器的行為。每一個(gè)編譯器標(biāo)志都公開(kāi)一個(gè)允許您更改編譯器行為方式的設(shè)置。
下表列出了與TSC編譯器相關(guān)的一些常見(jiàn)的標(biāo)志。一個(gè)典型的命令行用法使用部分或全部開(kāi)關(guān)。
序號(hào) | 編譯器標(biāo)志和說(shuō)明 |
---|---|
1 | --help 顯示幫助手冊(cè) |
2 | --module 加載外部模塊 |
3 | --target 設(shè)置目標(biāo)ECMA版本 |
4 | --declaration 生成額外的.d.ts文件 |
5 | --removeComments 移除輸出文件中所有注釋 |
6 | --out 將多個(gè)文件編譯為單個(gè)輸出文件 |
7 | --sourcemap 生成sourcemap(.map)文件 |
8 | --module noImplicitAny 不允許編譯器推論任何類(lèi)型 |
9 | --watch 觀察文件的更改并動(dòng)態(tài)重新編譯它們 |
注意:多個(gè)文件可以同時(shí)被編譯。
tsc file1.ts, file2.ts, file3.ts
標(biāo)識(shí)符是給予程序中元素的名稱(chēng),如變量,函數(shù)等。標(biāo)識(shí)符的規(guī)則如下:
標(biāo)識(shí)符可以包括字符和數(shù)字。但是,標(biāo)識(shí)符不能以數(shù)字開(kāi)頭。
除了下劃線(_)或美元符號(hào)($)外,標(biāo)識(shí)符不能包含特殊符號(hào)。
標(biāo)識(shí)符不能是關(guān)鍵字。
標(biāo)識(shí)符必須是唯一的。
標(biāo)識(shí)符是區(qū)分大小寫(xiě)的。
標(biāo)識(shí)符不能包含空格。
下表中列出了有效和無(wú)效的標(biāo)識(shí)符的一些例子:
有效的標(biāo)識(shí)符 | 無(wú)效的標(biāo)識(shí)符 |
---|---|
firstName | Var |
first_name | first name |
num1 | first-name |
$result | 1number |
關(guān)鍵字在語(yǔ)言的上下文中具有特殊含義。下表列出了TypeScript中的一些關(guān)鍵字:
break | as | any | switch |
case | if | throw | else |
var | number | string | get |
module | type | instanceof | typeof |
public | private | enum | export |
finally | for | while | void |
null | super | this | new |
in | return | true | false |
any | extends | static | let |
package | implements | interface | function |
new | try | yield | const |
continue | do | catch |
TypeScript忽略程序中出現(xiàn)的空格,制表符和換行符。你可以在程序中自由使用空格,制表符,換行符,并且可以自由地以簡(jiǎn)潔一致的方式格式化和縮進(jìn)程序,使代碼易于閱讀和理解。
TypeScript對(duì)大小寫(xiě)敏感,這意味著,TypeScript區(qū)分大寫(xiě)和小寫(xiě)字符。
每行指令都稱(chēng)為語(yǔ)句。分號(hào)在TypeScript中是可選的。
示例
console.log("hello world") console.log("We are learning TypeScript")
單行可以包含多個(gè)語(yǔ)句。然而,這些語(yǔ)句必須用分號(hào)隔開(kāi)。
注釋是提高程序可讀性的方法。注釋可用于包含有關(guān)程序的其他信息,如代碼的作者,有關(guān)函數(shù)/構(gòu)造的提示等。編譯器會(huì)忽略注釋。
TypeScript支持以下類(lèi)型的注釋?zhuān)?/p>
單行注釋?zhuān)?/) - // 和行尾之間的任何文本都視為注釋
多行注釋?zhuān)? * * /) - 這些注釋可能跨越多行。
示例
//this is single line comment /* This is a Multi-line comment */
TypeScript是面向?qū)ο蟮腏avaScript。面向?qū)ο笫且环N遵循真實(shí)世界建模的軟件開(kāi)發(fā)范例。面向?qū)ο髮⒊绦蛞暈橥ㄟ^(guò)稱(chēng)為方法的機(jī)制相互通信的對(duì)象集合。TypeScript支持這些面向?qū)ο蟮慕M件。
Object(對(duì)象) - 一個(gè)對(duì)象是任何實(shí)體的實(shí)時(shí)表示。根據(jù)Grady Brooch的說(shuō)法,每個(gè)對(duì)象必須有三個(gè)特征:
State(狀態(tài)) - 由對(duì)象的屬性描述
Behavior(行為) - 描述對(duì)象的行為方式
Identity(標(biāo)識(shí)) - 將對(duì)象與一組類(lèi)似此類(lèi)對(duì)象區(qū)分開(kāi)的唯一值。
Class(類(lèi)) - OOP方面的類(lèi)是創(chuàng)建對(duì)象的藍(lán)圖。 類(lèi)封裝了對(duì)象的數(shù)據(jù)。
Method(方法) - 方法促進(jìn)對(duì)象之間的通信。
例如:
class Greeting { greet():void { console.log("Hello World!!!") } } var obj = new Greeting(); obj.greet();
上面的示例定義了一個(gè)類(lèi)Greeting。這個(gè)類(lèi)有一個(gè)方法greet()。該方法在終端上打印字符串“Hello World”。new關(guān)鍵字創(chuàng)建類(lèi)(obj)的對(duì)象。該對(duì)象調(diào)用方法greet()。
在編譯時(shí),它會(huì)生成以下JavaScript代碼:
//Generated by typescript 1.8.10 var Greeting = (function () { function Greeting() { } Greeting.prototype.greet = function () { console.log("Hello World!!!"); }; return Greeting; }()); var obj = new Greeting(); obj.greet()
上述程序的輸出如下:
Hello World!!!
更多建議: