TypeScript基本知識點整理——變量類型

在Javascript中,前面一篇文章介紹了TypeScript(微信公衆號中的一篇文章),相信看過這邊文章的人應該對Ts有所瞭解了。這篇文章大家和我一起來了解下TS的基本知識點吧。

在開始之前我們先裝環境:

npm i typescript -g //全局安裝typescriptnpm init -y //進入文件夾,初始化項目,生成package.json文件tsc --init //創建tsconfig.json文件npm i @types/node -S //這個主要是解決模塊的聲明

環境到此安裝結束;

變量類型

(1)number 類型

let num1 : number = 20;let num2 : number = 175.5;let a1 : number = Infinity; //正無窮大let a2 : number = -Infinity; //負無窮小let a3 : number = NaN;

  注意:Infinity, -Infinity, NaN 也屬於Number類型

(2)undefined 類型

let un : undefined = undefined;

注意:undefined 類型的數據只能被賦值爲 undefined,在 typescript中,已聲明未初始化的值要直接訪問的話,類型需要定義爲undefined。

(3)null 類型

let nu : null = null;

注意:

null 類型只能被被賦值爲null

null是一個空指針對象,undefined是未初始化的變量,所以,可以把undefined看成一個空變量,把unll看成一個空對象。

特別注意: 默認情況下,undefined 和 null 類型,是所有其它類型的子類型,也可以說成,它倆可以給所有其他類型賦值。

(4)string 類型

//值類型let str : string = '你好!'//引用類型let str1 : String = new String('你好!')

(5)boolean 類型

let boo : boolean = true;let boo1 : boolean = false;

(6)symbol 類型

let sy : symbol = Symbol('bar');

注意: symbol類型的值是通過Symbol構造函數創建的。   

(7)數組類型

//字面量let arr1 : number[] = [1, 2]//泛型---->相當於數組中每個元素的類型let arr2 : Array<string> = ['a', 's'] //構造函數let arr3 : string[] = new Array('a', 's') //聯合類型-->這裏的聯合類型的意思是,數組中元素的類型可以是number 或 string,兩種都有也可以let arr4 : Array<number | string> = [2, 'a']

   (8)元組類型(tuple)

let tup : [string,number] = ['asdasd', 43233];

注意:

元組和數組看起來有點類似,但是,是有區別的

元組的長度是有限的,而且分別爲每一個元素定義了類型

(9)枚舉類型(enum)

enum--->組織收集一組相關變量的方式。

數字枚舉

enum REN {// nan = 1 ----->初始化下標    nan,    nv,    yao}console.log(REN.nan)//0console.log(REN.nv)//1console.log(REN.yao)//2//使用數字枚舉時,TS 會爲枚舉成員生成反向映射console.log(REN[2])// yao

注意:

數字的枚舉---->下標從0開始,也可以自行設置枚舉成員的初始值,它們會依次遞增。

字符串枚舉

enum SIJI {    chun = '春',    xia = '夏',    qiu = '秋',    dong = '冬'}console.log(SIJI.chun)//春console.log(SIJI.xia)//夏console.log(SIJI.qiu)//秋console.log(SIJI.dong)//冬

注意:

字符串枚舉類型允許使用字符串來初始化枚舉成員,可以是一個字符串字面量或者另一個字符串的枚舉成員

字符串枚舉類型不支持成員自增長,每個成員必須初始化,另外字符串枚舉不會爲成員生成發向映射

(10)void 類型

void 類型--->表示沒有任何返回值,一般用於定義方法時方法沒有返回值

function f1() : void {console.log('void類型')}

注意:

這裏你也可以指定返回值類型爲 undefined。因爲 JS 中,如果函數沒有返回值,則會默認返回 undefind。不過,使用 void 類型可以使表意更清晰。

(11)any 類型

注意: 其他類型都是any類型的子類型 ,any類型的值可以被賦值爲任何類型的值

let an : any = 'any 類型';console.log(an)//any 類型an = 25;console.log(an)//25

注意:對於any 需要注意兩點

如果在聲明變量時,沒有聲明其類型,也沒有初始化,(因爲類型推斷會自動判斷類型),那麼它就會被判斷爲any類型

let an1;an1 = '沒有聲明其類型,也沒有初始化';console.log(an1)//沒有聲明其類型,也沒有初始化an1 = 25console.log(an1)//25

在any類型變量上可以訪問任何屬性,即使它不存在。

let something: any = 42something.mayExist()    // 沒問題,因爲其可能在運行時存在something.toFixed() // 沒問題,雖然確實存在,但是編譯器並不會去檢查

(12)never 類型

注意:

never 表示永遠不會存在的值的類型, never 是任何類型的子類型,但是 沒有任何類型是never的子類型或可以賦值給never類型(除了never本身之外)。即使 any也不可以賦值給never。

never 類型常用於兩種情況

用於描述從不會有返回值的函數---》返回never的函數必須存在無法達到的終點。

function f5() : never {    while (true) {// do something     } }

用於描述總拋出錯誤的函數

function f2(msg : string) : never {    throw new Error(msg)}

(13)日期類型

let da : Date = new Date()console.log(da)

(14)正則表達式類型

//構造函數聲明法let reg1 : RegExp = new RegExp('ljy','gi')console.log(reg1) //字面量的聲明法let reg2 : RegExp = /ljy/giconsole.log(reg2)

 

總結

    TS的數據類型有14種之多,這也使得前後端的差異越來越小。

    對於習慣使用弱類型語言JS的同學可能有些不適應。

    下一篇文章會出關於TypeScript的函數的知識點,敬請期待。

 

 

掃碼關注,更多知識

 

你點的每個關注,我都認真當成了喜歡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章