TypeScript學習2-數據類型

變量類型

TypeScript支持的變量類型與JavaScript基本同樣。另外提供了枚舉類型javascript

這裏仍是給出一些例子去理解TypeScript的變量類型使用,具體的語言知識能夠查看文檔。html

原始類型

// boolean
let success: boolean = true;
// number
let num1: number = 12;
let num2: number = 0xab; // 支持多種進制
// string
let str1: string = 'abc';

除上述示例,還有null, undefined, symbol類型,能夠參看文檔。java

數組和元組

數組有兩種聲明方式:數組

let arr1: string[] = ['hello', 'world'];
let arr2: Array<string> = ['hello', 'world'];

元組是一種特殊的數組函數

let arr1: [string, number] = ['hello', 123];
元組越界時,會以聯合類型來處理,具體請查閱文檔。

枚舉

枚舉類型與C#,Java語言相比,另外提供了一個便利特性,能夠拿到枚舉的名稱。code

enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];

console.log(colorName);  // 顯示'Green'由於上面代碼裏它的值是2

any, void

  • any表示任意類型,能夠在類型不肯定時使用(能不用就不要用),如:htm

    • 第三方的返回值,你沒法肯定類型
    • 你不肯定你將會用到哪些類型
  • void正好相反,表示沒有類型,通常用於沒有返回值的函數

null, undefined

  • 類型定義和JavaScript一致
  • TypeScript裏面,能夠賦給:自己類型、any、void

object

object類型是基本的6個類型以外的其餘類型的基類。ip

使用時需注意,用object聲明時,後面只能當object使用,如:文檔

let a: object = new Date();
a.hasOwnProperty('name'); // ok
a.getDate(); // error

never

never是個比較特殊的類型,表示永遠不會到達。get

典型的場景就是異常拋出函數的返回值。

function bizError(code: number, msg: string): never {
   throw new Error({
       code,
       msg
   }); 
}

類型斷言

類型斷言,我以爲也能夠理解爲強制類型轉換。

這個特性和強類型語言類型,看幾個例子理解一下:

// 尖括號式
let var1: any = 'abc';
console.log((<string>var1).substring(1));

// as
let var2: object = new Array<number>();
console.log((var2 as Array<number>).push(1));

類型推斷

有些狀況下,不須要指明變量類型,TypeScript能夠根據上下文自動推斷類型。以下示例:

let a = 'abc';
console.log(a.substring(1));

let obj1 = {
    str1: 'abc',
    num1: 123
};

let { str1, num1 } = obj1;

參考

  1. TypeScript語言手冊 https://www.tslang.cn/docs/ha...
相關文章
相關標籤/搜索