1. 程式人生 > 其它 >typeScript中的資料型別

typeScript中的資料型別

typeScript中的資料型別

typescript中為了使編寫的程式碼更規範,更有利於維護,增加了型別校驗,在typescript中主要給我們提供了以下資料型別
  • 布林型別(boolean)
  • 數字型別(number)
  • 字串型別(string)
  • 陣列型別(array)
  • 元組型別(tuple)
  • 列舉型別(enum)
  • 任意型別(any)
  • null 和 undefined
  • void型別
  • never型別
  • Object

typescript中為了使編寫的程式碼更規範,更有利於維護,增加了型別校驗 寫ts程式碼必須指定型別,變數名:指定型別

布林型別(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<元素型別>;

// 第一種定義陣列的方式
var
arr:number[]=[11,22,33]; //內部元素必須為number console.log(arr); //2.第二種定義陣列的方式 var arr:Array<number>=[11,22,33]; console.log(arr)

元組型別(tuple)

元組型別允許表示一個已知元素數量和型別的陣列,各元素的型別不必相同。 比如,你可以定義一對值分別為stringnumber型別的元組。

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

預設情況下nullundefined是所有型別的子型別。

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型別是任何型別的子型別,也可以賦值給任何型別;

這意味著宣告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表示非原始型別,也就是除numberstringbooleansymbolnullundefined之外的型別。

使用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