TypeScript 入門

開發(fā)環(huán)境

1.安裝Node.js

https://nodejs.org/zh-cn/

通過 node -v 命令查看本機(jī)是否安裝,如果沒有安裝,參考node.js安裝指南 根據(jù)電腦系統(tǒng)環(huán)境進(jìn)行安裝

2.初始化一個 TypeScript 項(xiàng)目

mkdir project && cd project
npm init -y
npm install -save-dev typescript

3.創(chuàng)建 tsconfig.json 文件

方法一:在vscode 中,點(diǎn)擊右下角版本號


創(chuàng)建 tsconfig.json 文件

方法二:

node_modules/.bin/tsc --init --locale zg-CN

通過這種方法創(chuàng)建,tsconfig.json 包含所有編譯器參數(shù)以及參數(shù)說明

4.TS Playground 工具

https://www.typescriptlang.org/play

鼠標(biāo)懸停在類型名上查看其類型,ctrlctrl + click查看定義和引用

5.運(yùn)行 index.ts 文件

Node 不能直接運(yùn)行 TypeScript 文件,需要用轉(zhuǎn)換成 JavaScript 文件

執(zhí)行以下命令將 TypeScript 轉(zhuǎn)換為 JavaScript 代碼:

tsc index.ts

使用 node 命令來執(zhí)行 index.js 文件

node index.js

6.ts-node 的安裝和使用

使用 ts-node 插件,不用再編譯,而使用 ts-node 就可以直接看到編寫結(jié)果

全局安裝

npm install -g ts-node

使用

ts-node index.ts  

基礎(chǔ)知識

1.TypeScript 程序由以下幾個部分組成

  • 模塊
  • 函數(shù)
  • 變量
  • 語句和表達(dá)式
  • 注釋

2.空白和換行

TypeScript 會忽略程序中出現(xiàn)的空格、制表符和換行符。

空格、制表符通常用來縮進(jìn)代碼,使代碼易于閱讀和理解。

3.TypeScript 區(qū)分大小寫

TypeScript 區(qū)分大寫和小寫字符。

4.分號是可選的

每行指令都是一段語句,你可以使用分號或不使用, 分號在 TypeScript 中是可選的,建議使用。

如果語句寫在同一行則一定需要使用分號來分隔,否則會報錯。

5.TypeScript 注釋

  • 單行注釋 ( // ) ? 在 // 后面的文字都是注釋內(nèi)容。
  • 多行注釋 (/* */) ? 這種注釋可以跨越多行。

基礎(chǔ)類型

數(shù)據(jù)類型 關(guān)鍵字 描述
任意 any 聲明為 any 的變量可以賦予任意類型的值。
數(shù)字 number 雙精度 64 位浮點(diǎn)值。它可以用來表示整數(shù)和分?jǐn)?shù)。
字符串 string 一個字符系列,使用單引號(')或雙引號(")來表示字符串類型。反引號(`)來定義多行文本和內(nèi)嵌表達(dá)式。
布爾 boolean 表示邏輯值:true 和 false。
數(shù)組 在元素類型后面加上[],或者使用數(shù)組泛型
元組 元組類型用來表示已知元素數(shù)量和類型的數(shù)組,各元素的類型不必相同,對應(yīng)位置的類型需要相同。
枚舉 enum 枚舉類型用于定義數(shù)值集合。
void void 用于標(biāo)識方法返回值的類型,表示該方法沒有返回值。
null null 表示對象值缺失。
undefined undefined 用于初始化變量為一個未定義的值
never never never 是其它類型(包括 null 和 undefined)的子類型,代表從不會出現(xiàn)的值。

值空間與類型空間

只包含類型聲明的 namespace 不會產(chǎn)生 JS 代碼,不會引入變量

instanceof 操作符只作用于值空間

如何判斷符號是在哪個空間?

  1. 轉(zhuǎn)譯后消失的符號 → 類型空間

  2. 作為類型注解、別名的符號 → 類型空間

    ( type T = typeof Person; const p: Person)

  3. 類型斷言后的符號 → 類型空間 ( target as/is HTMLElement )

  4. const,、let、var 后面的符號 → 值空間

  5. class、enum、namespace 后的符號 → 值空間 + 類型空間

有一些操作符在兩個空間都存在,但是含義完全不同:

typeof

在值空間,typeof 返后面表達(dá)式對應(yīng)的 JavaScript 類型的字符串表示

( string , number , bigint , boolean , symbol , undefined , object , function )在類型空間,typeof返回標(biāo)識符對應(yīng)的 TypeScript 類型

[ ] (索引訪問操作符 Indexed Access Operator)

在值空間,val[field] 或 val.field 返回 val 對應(yīng)屬性的值

在類型空間,Type[T] 返回對應(yīng) TS 類型

this關(guān)鍵字

在值空間,this 指向...比較復(fù)雜

在類型空間,this 可以作為類方法的返回值來實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用

&| 運(yùn)算符

在值空間表示 “按位與” 和 “按位或” (Bitwise AND,OR)

在類型空間表示類型的交叉和聯(lián)合

const

在值空間用來聲明常量

在類型空間與 as 連用,即 “as const” 常量斷言,收窄類型

extends

在值空間用于定義子類(class A extends B)

在類型空間用來進(jìn)行類型約束(T extends number)或接口繼承(interface A extends B)

in

在值空間用于for循環(huán)(for (key in object){ ...})和判斷屬性是否存在( name in person)

在類型空間用于映射類型的 key 的聲明(Mapped Type)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容