前端時間在學習TS,但是發現一直沒去使用,就忘得差不多了,所以打算做個記錄,鞏固一下。
今天來說TS中的型別。
準備
先安裝TypeScript:
npm i -g typescript
複製程式碼
webStrom進行配置File -> Settings -> Languages & Frameworks -> TypeScript, 勾上勾:
修改下你的ts檔案,就會在ts檔案下面生成個編譯好的js:型別
TypeScript中的型別主要分為以下幾種:
/*
布林型別(boolean)
數字型別(number)
字串型別(string)
陣列型別(array)
元組型別(tuple)
列舉型別(enum)
任意型別(any)
null 和 undefind
void 型別
never 型別
*/
複製程式碼
- boolean型別、number型別、string型別
let flag:boolean = true //定義一個型別為boolean的變數
flag = false //正確
flag = 123 //編譯器報錯
flag = null //編譯器不報錯
flag = undefined //編譯器不報錯
let num:number = 123 //定義一個型別為number的變數
num = 456 //編譯器不報錯
num = '2222' //編譯器報錯
num = NaN //編譯器不報錯
num = null //編譯器不報錯
num = undefined //編譯器不報錯
...string型別同上
複製程式碼
- array型別
// Ts裡定義陣列的方式有兩種
//第一種,number為陣列內元素的型別
let arr:number[] = [1,2,3,4,5]
arr[2] = 22 //編譯器不報錯
arr[1] = 'wwww' //陣列內元素只能為number型別,編譯器報錯
//第二種,泛型定義。。
let arr1:Array<string> = ['11', '22', '33']
arr1[1] = '111' //編譯器不報錯
arr1[1] = 21 //陣列內元素只能為string型別,編譯器報錯
複製程式碼
- tuple型別
//元祖型別屬於陣列的一種,可以給每一個位置指定型別
let arr:[number, string] = [1, '222'] //定義一個第一個元素為number型別, 第二個元素為string型別的陣列
arr[0] = 2 //編譯器不報錯
arr[1] = 2 //arr[1]只能是string型別,編譯器報錯
複製程式碼
- enum型別
/*
類似於一個反陣列,value會自增,提供了一個語義化的標準
enum 列舉名{
識別符號[=整形常數],
識別符號[=整形常數],
識別符號[=整形常數],
......
識別符號[=整形常數],
}
*/
enum flag {success, error};
let s:flag = flag.success
console.log(s) // ==> 0
enum flag1 {success = 2, error};
console.log(flag1.success) // => 2
console.log(flag1.error) // =>3
複製程式碼
- any型別
//任意型別,如其名字,不限型別
let item:any = 123
item = '123' //因為item是任意型別,編譯器不會報錯
let dom:any = document.querySelector('#box') //獲取dom元素進行操作
複製程式碼
- null和undefind 型別
let num:number | undefined //可以這樣定義變數
let num1:number | null
複製程式碼
- void型別
//一般用於定義沒有返回值的方法
function Fn():void {
console.log(666)
}
function Fn1():number { //編譯器報錯,該函式沒有number型別的返回值
console.log(666)
}
function Fn2():number { //返回number型別值,編譯器不報錯
console.log(666)
return 666
}
複製程式碼
- never型別
//never是其他型別(包括null 和 undefined)的子型別,代表從不會出現的值。
//這意味著宣告never的變數只能被never型別所賦值
let a:never;
a = 123 //報錯
a = (()=>{ //a表示不會出現的型別,不報錯
throw new Error('錯誤!!!')
})()
複製程式碼