TypeScript學習筆記(二):基本數據類型及數據轉換


數據類型

我們來看看TypeScript中的基本數據類型都有哪些。

boolean

布爾值,支持true和false。

var isDone: boolean = false;

默認為undefined,此時其和true與false判斷都為false。

1 var isDone: boolean;
2 
3 function run() {
4     alert(isDone == true);//false
5     alert(isDone == false);//false
6 }
7 
8 run();

所以在使用boolean類型時要記得賦初值,以便避免以后的麻煩。

number

數字類型,如下:

var height: number = 6;

首先,TypeScript中對於數字只有這么一種類型,沒有byte、short、int、uint、long、float、double等類型,而TypeScript的number實際上是一個64為的雙精度浮點數,可以看做其它語言中的double類型。

需要注意的是,當不進行初始賦值時,所有的基本數據類型都默認為undefined類型,下面不再重復講解。

string

字符串類型,如下:

var name: string = "bob";
name = 'smith';

字符串的使用與JavaScript一致。

any

表示為任意類型,如下:

var notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;

我們發現notSure可以設定為任意的類型。

我們也可以將其用在數組上,如下:

var list:any[] = [1, true, "free"];
list[1] = 100;

undefined和null

null和undefined基本是同義的,只有一些細微的差別。

undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。

null表示"沒有對象",即該處不應該有值。

參考:http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html

void

用在函數返回值,和C++、Java用法一致,表示沒有返回值:

function warnUser(): void {
    alert("This is my warning message");
}

Array

數組類型,可以有兩種寫法,如下:

var list:number[] = [1, 2, 3];
var list:Array<number> = [1, 2, 3];

二維數組

var num: string[][] = [["asdf", "zxc"],["adsf"]];

其它使用方法和JavaScript中一致。

Object

可以當做Hash表來使用,如下:

 1 var obj: Object = {};
 2 
 3 function run() {
 4     obj["a"] = 123;
 5     //obj.b = "asdf";//這種寫法是錯誤的
 6     obj["b"] = "asdf";
 7     obj[100] = true;
 8 
 9     delete obj["100"];//刪除使用 delete 關鍵字
10 
11     for (var key in obj) {
12         alert(key);
13         alert(obj[key]);
14     }
15 }
16 
17 run();

需要注意的是,該類型的鍵都是字符串類型,即所有當做鍵的對象都會調用toString()方法獲得對應的字符串來作為鍵值保存對象。

Enum

枚舉類型,如下:

enum Color {Red, Green, Blue};
var c: Color = Color.Green;

另一種格式:

enum Color {Red, Green, Blue};
var c: Color = Color[1];

同時還可以對每個枚舉進行賦值,如下:

enum Color {Red = 1, Green, Blue};
var c: Color = Color.Green;

這樣,Green自動被賦值為2,Blue自動被賦值為3。

也可以全部進行賦值:

enum Color {Red = 1, Green = 2, Blue = 4};
var c: Color = Color.Green;

我們還可以獲得指定索引的枚舉的名稱:

enum Color {Red = 1, Green, Blue};
var colorName: string = Color[2];
alert(colorName);

需要注意的是,這里的值可以看做數組的下標,如下:

enum Color {Red = 100, Green, Blue};
var colorName: string = Color[101];
alert(colorName);//Green

數據轉換

強制轉換

將一個類型強制轉換為另一個類型,如果轉換失敗編譯時會報錯,如下:

var str: string = <string> num;//轉換成功
var strNum: number = <number> str;//編譯報錯

TypeScript中沒有as關鍵字進行轉換,都是強制轉換。

instanceof

instanceof可以用來判斷一個對象是否為指定的類型,如果是則返回true,否則返回false,如下:

if (obj instanceof String) {
    alert("obj is string!");
}

typeof

可以獲取類型的字符串描述:

1 typeof 3 // "number"
2 typeof "abc" // "string"
3 typeof {} // "object"
4 typeof true // "boolean"
5 typeof undefined // "undefined"
6 typeof function(){} // "function"

可參考:http://tobyho.com/2011/01/28/checking-types-in-javascript/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM