《揭祕Angular 2》-基本型別

a_Keri發表於2017-12-01
 最近在學習《揭祕Angular 2》想向大家分享一下,就從Angular 2入門 TypeScript開始講起:

TypeScript是一種由微軟開發的自由和開源的程式語言。它是JavaScript的一個超集,而且本質上向這個語言新增了可選的靜態型別和基於類的物件導向程式設計。安德斯·海爾斯伯格,C#的首席架構師,已工作於TypeScript的開發。

    ES6中引入了,let變數宣告和const常量宣告,箭頭函式等特性,極大的增強了JavaScript語言開發的能力。


typescript安裝

通過npm安裝typescript:
1.npm install -g typescript
2.tsc -v 檢查typescript版本(tsc是typescript的編譯命令)


TypeScript 基本型別


在TypeScript中,提供了一下基本資料型別

  • 布林型別(boolean)
  • 數字型別(number)
  • 字串型別(string)
  • 陣列型別(array)
  • 元組型別(tuple)
  • 列舉型別(enum)
  • 任意值型別(any)
  • null 和 undefined
  • void 型別
  • never 型別
其中元組型別(tuple)、列舉型別(enum)、任意值型別(any)、void 型別和 never型別是TypeScript特有型別。

注:在TypeScript中宣告變數,需要加上型別宣告


TypeScript布林型別
  • 布林型別是最簡單的資料型別,只有true和false兩種值。如果我們給flag設定初始值為布林值,再給flag賦別的值是,就會報錯
let flag: boolean = true;

flag = 1; // 報錯


TypeScript數字型別

  • typescript的數字型別均為浮點型,但同時支援二進位制,八進位制,十進位制和十六進位制。
let num1 : number = 0b1010;//二進位制
let num2 : number = 0o744;//八進位制
let num3 : number = 6;//十進位制

let num4 : number = 0xf00d;//十六進位制


TypeScript字串型別
  • typescript支援使用單引號或者雙引號來表示字串型別。
//定義字串型別
let name1 : string = "I";

let years : number = 18;


TypeScript陣列型別
  • typescript陣列操作類似於JavaScript中陣列的操作,但建議開發者最好只為陣列元素賦一種型別值。
typescript有兩種陣列定義方式。
//定義陣列方式
//在元素後面接上[]
let arr : number[] = [1,2];
//使用陣列泛型

let arr2 : Array<number> = [1,2]; 


TypeScript元組型別
  • 元組型別用來表示已知元素數量和型別的陣列,各元素的型別不必相同。
let x : [string, number];
x = ['I',18];
//x = ['18','typescript'];//報錯

console.log(x[0])

TypeScript列舉型別
  • 列舉型別是一個可被命名的整數型常量的集合,列舉型別為集合成員賦予有意義的名稱,增強可讀性。
//定義列舉型別
enum Color {red , green , blue}
//列舉預設下標為0,但可以手動修改
//enum Color {red = 4 , green , blue = 7}
let c : Color = Color.blue;

console.log(c);

TypeScript任意值型別
  • 任意值針對的是型別不明確的變數變數值會動態變化時,任意值型別可以幫助這些變數跳過編譯階段的型別檢查
let a : any = 1;
a = "hello";
a = false;

  • 改寫現有程式碼時,任意值允許在編譯時可選擇地包含和移除型別檢查
let x: any = 4;
x.ifItExists();    // 正確,ifItExists方法在執行時可能存在,但這裡並不會檢查
x.toFixed();    // 正確

  • 定義各種型別資料陣列時
let arrayList: any[] = [1, false, 'fine'];

arrayList[1] = 100;

typescript  null 和 undefined
  • 預設情況下,null 和 undefined 是其它型別的子型別,可以賦值給其它型別,如數字型別,此時,賦值後的型別會變成 null 或 undefined。在typescript中啟用嚴格的空校驗特性,使得null和undefined只能賦值給void或本身對應的的型別。可以用“ | ”支援多型別
  • null和undefined也有自己本身的型別,但我們不建議使用
// 啟用 --strictNullChecks

let x: number;

let y: number |undefined;

let z: number|null| undefined;


x = 1; // 執行正確

y=1;// 執行正確

z=1;// 執行正確


x = undefined;    // 執行錯誤

y=undefined; // 執行正確

z=undefined;// 執行正確


x = null;    // 執行錯誤

y=null;  // 執行錯誤

z=null;// 執行正確


x=y;  // 執行錯誤

x=z;  // 執行錯誤

y=x;// 執行正確

y=z;// 執行錯誤

z=x;// 執行正確

z=y;// 執行正確

上面的例子中變數y允許被賦予數字型別undefined或undefined型別的資料值,而變數z還額外支援null。

TypeScript官方建議在編碼時,都啟用--strictNullchecks特性,這樣有利於編寫更強壯的程式碼。

TypeScript  void 型別
  • 在typescript中,void表示沒有任何型別。如果一個函式沒有返回值,它的返回值就是void。
function hello ():void{
    alert("hello typescript")
}

TypeScript  never 型別
  • never是其他型別的子型別,代表不會出現的值。這就意味著宣告為never的型別的變數只能被never型別所賦值,在函式中它通常表現為丟擲異常或者無法執行到終止點。
let x: never;
let y: number;

// 執行錯誤,數字型別不能轉為 never 型別
x = 211;


// 執行正確,never 型別可以賦值給 never型別
x = (()=>{ throw new Error('exception')})();


// 執行正確,never 型別可以賦值給 數字型別
y = (()=>{ throw new Error('exception')})();


// 返回值為 never 的函式可以是丟擲異常的情況
function error(message: string): never {
    throw new Error(message);
}

// 返回值為 never 的函式可以是無法被執行到的終止點的情況
function loop(): never {

   while (true) {}

}


TypeScript基本型別已經總結完,希望對大家有幫助哦~~~see  you..


相關文章