typeScript中的資料型別
阿新 • • 發佈:2021-11-03
typeScript中的資料型別
typescript中為了使編寫的程式碼更規範,更有利於維護,增加了型別校驗,在typescript中主要給我們提供了以下資料型別- 布林型別(boolean)
- 數字型別(number)
- 字串型別(string)
- 陣列型別(array)
- 元組型別(tuple)
- 列舉型別(enum)
- 任意型別(any)
- null 和 undefined
- void型別
- never型別
-
Object
布林型別(boolean)
var flag:boolean=true; // flag=123; //錯誤 flag=false; //正確 console.log(flag);
數字型別(number)
var num:number=123; num=456; console.log(num); /正確/ //num='str'; //錯誤
字串型別(string)
var str:string='hello'; str='hello'; //正確 //str=true; //錯誤
陣列型別(array)
TypeScript像JavaScript一樣可以運算元組元素。 有兩種方式可以定義陣列。 第一種,可以在元素型別後面接上[]
,表示由此型別元素組成的一個數組;第二種方式是使用陣列泛型,Array<元素型別>;
// 第一種定義陣列的方式 vararr:number[]=[11,22,33]; //內部元素必須為number console.log(arr); //2.第二種定義陣列的方式 var arr:Array<number>=[11,22,33]; console.log(arr)
元組型別(tuple)
元組型別允許表示一個已知元素數量和型別的陣列,各元素的型別不必相同。 比如,你可以定義一對值分別為string
和number
型別的元組。
var arr:Array<number>=[11,22,33]; console.log(arr) //元祖型別 let list:[number,string,boolean]=[123,'hello',false]; console.log(list);
列舉型別(enum)
enum
型別是對JavaScript標準資料型別的一個補充。使用列舉型別可以為一組數值賦予友好的名字。
enum 列舉名{ 識別符號[=整型常數], 識別符號[=整型常數], ... 識別符號[=整型常數], } ;
enum Flag{success=1,error=0}; let s:Flag=Flag.success; console.log(s);
預設情況下,從0
開始為元素編號。也可以手動的指定成員的數值
列舉型別提供的一個便利是你可以由列舉的值得到它的名字。
enum Flag{success=1,error=0}; let s:string=Flag[1]; console.log(s);
我們看下面a輸出的是什麼
enum Flag{success,error=4,no}; let a:Flag=Flag.no; console.log(a);
預設的no是沒有值得,但是error有值,按上一個值為基準,所以no的值為5,輸出a為5
任意型別(any)
var arr:any[]=[1,"str",true] console.log(arr)
制定了任意型別的陣列,其內部可以是任意的型別
任意型別的用處
<div id="box"> </div>
此時我們想給這個盒子變成紅色,我們在ts中這樣寫
var box=document.getElementById("box") box.style.color="red"
此時會報錯
但是我們指定型別為object之後又報錯,是因為基本型別中沒有object型別,所以這個時候我們就可以指定型別為any
var box:object=document.getElementById("box")
var box:any=document.getElementById("box") box.style.color="red"
此時就不會報錯
null 和 undefined
預設情況下null
和undefined
是所有型別的子型別。
var num:number; //console.log(num) //輸出undefined var num2:undefined; console.log(num2) //正確 var num3:number|undefined console.log(num3) //輸出undefined var num4:null; num=123//報錯
void型別
某種程度上來說,void
型別像是與any
型別相反,它表示沒有任何型別。 當一個函式沒有返回值時,通常會見到其返回值型別是void
:
function warnUser(): void { console.log("hello"); }
此時開啟瀏覽器什麼也不會輸出
never型別
never
型別表示的是那些永不存在的值的型別。never
型別是任何型別的子型別,也可以賦值給任何型別;
var a:undefined //a=123 //報錯 //a=null//報錯 a=undefined var b:null //a=123 //報錯 b=null //b=undefined//報錯
var c:never; //a=123//錯誤 a=(()=>{ throw new Error("錯誤") })()
Object
object
表示非原始型別,也就是除number
,string
,boolean
,symbol
,null
或undefined
之外的型別。
使用object
型別,就可以更好的表示像Object.create
這樣的API
declare function create(o: object | null): void; create({ prop: 0 }); // OK create(null); // OK create(42); // Error create("string"); // Error create(false); // Error create(undefined); // Error