TypeScript 基本語(yǔ)法

2018-12-25 18:49 更新

語(yǔ)法定義了一組用于編寫(xiě)程序的規(guī)則。每一種語(yǔ)言規(guī)范定義了它自己的語(yǔ)法。一個(gè)TypeScript程序是由以下幾個(gè)部分組成:

  • Modules(模塊)
  • Functions(功能)
  • Variables(變量)
  • Statements 和 Expressions(語(yǔ)句和表達(dá)式)
  • Comments(注釋?zhuān)?/li>

你的第一個(gè)TypeScript代碼

讓我們先從傳統(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)在屏幕上顯示文本。

編譯并執(zhí)行TypeScript程序

讓我們來(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)。

編譯和執(zhí)行

第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)志

編譯標(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

TypeScript中的標(biāo)識(shí)符

標(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í)符
firstNameVar
first_namefirst name
num1first-name
$result1number

TypeScript 關(guān)鍵字

關(guān)鍵字在語(yǔ)言的上下文中具有特殊含義。下表列出了TypeScript中的一些關(guān)鍵字:

breakasanyswitch
caseifthrowelse
varnumberstringget
moduletypeinstanceoftypeof
publicprivateenumexport
finallyforwhilevoid
nullsuperthisnew
inreturntruefalse
anyextendsstaticlet
packageimplementsinterfacefunction
newtryyieldconst
continuedocatch

空格和換行符

TypeScript忽略程序中出現(xiàn)的空格,制表符和換行符。你可以在程序中自由使用空格,制表符,換行符,并且可以自由地以簡(jiǎn)潔一致的方式格式化和縮進(jìn)程序,使代碼易于閱讀和理解。

TypeScript對(duì)大小寫(xiě)敏感

TypeScript對(duì)大小寫(xiě)敏感,這意味著,TypeScript區(qū)分大寫(xiě)和小寫(xiě)字符。

分號(hào)是可選

每行指令都稱(chēng)為語(yǔ)句。分號(hào)在TypeScript中是可選的。

示例

console.log("hello world")
console.log("We are learning TypeScript")

單行可以包含多個(gè)語(yǔ)句。然而,這些語(yǔ)句必須用分號(hào)隔開(kāi)。

TypeScript中的注釋

注釋是提高程序可讀性的方法。注釋可用于包含有關(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ū)ο?/h2>

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!!!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)