《TypeScript 中文入門教程》 1、基礎數據類型


轉載:https://github.com/MyErpSoft/TypeScript-Handbook/blob/master/pages/zh-CHS/Basic%20Types.md

概述

為了讓程序更易用,我們兼容幾種最基本的數據類型:numbers(數字),strings(字符串),structures(結構),boolean(布爾值)等等。在 TypeScript 中,我們支持和 Javascript 幾乎一樣多的類型,並且新增了實用的枚舉類型。

Boolean 布爾值

最基礎的數據類型就是簡單的 true(真)/false(假) ,在 Javascript 和 TypeScript (以及其他語言)中被稱作是 "boolean(布爾值)"。

var isDone: boolean = false;

 

Number 數字

和 Javascript 一樣,在 TypeScript 中所有的number都是浮點值。 TypeScript 除了支持ECMAScript 2015中的十六進制和十進制外,還支持二進制和二進制類型。

var decLiteral: number = 6;
var hexLiteral: number = 0x9837abdef;
var binaryLiteral: number = 0b0010;
var octalLiteral: number = 0o74563;

 

String 字符串

在使用JavaScript創建網頁或應用程序時,要用到很基礎的功能是處理字符串,和其他語言一樣,我們使用 "string" 類型來表示那些文本數據。和 JavaScript 一樣,TypeScript 也使用雙引號或單引號來圍繞字符串數據。

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

 

你也可以使用 模板字符串,他能支持多行文本和內嵌表達式。這些字符串使用單引號(`)包圍,並且嵌入的表達式使用${ expr }這樣的形式表示。

var name: string = `Gene`;
var age: number = 37;
var sentence: string = `Hello, my name is ${ name }.

I'll be ${ age + 1 } years old next month.`

 

上面的表達式相當於下面的聲明方式:

var sentence: string = "Hello, my name is " + name + ".\n\n" +
    "I'll be " + (age + 1) + " years old next month."

 

Array 數組

TypeScript 和 Javascript 一樣,允許你使用數組。數組類型的定義可以有兩種寫法。第一種寫法,你在數組元素類型后面添加‘[]’來表示這是一個該類型的數組:

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

 

第二種寫法使用一種通用的數組類型表示,Array<數組元素類型>:

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

 

Tuple 元組

元組類型允許表達固定數量的已知類型集合,但這些類型不必是相同的。例如,您可能想表示一個'stringnumber`組合的類型:

// 聲明一個元組類型
var x: [string, number];
// 初始化他
x = ['hello', 10]; // 准確
// 錯誤的初始化
x = [10, 'hello']; // 錯誤

 

我們可以使用數字檢索一個已知的元素,但需要注意類型正確。

console.log(x[0].substr(1)); // 正確
console.log(x[1].substr(1)); // 錯誤,'number' 類型沒有 'substr' 方法

 

當訪問的索引超過邊界時,將使用聯合類型處理:

x[3] = 'world'; // 正確,string允許被分配到 (string | number)
console.log(x[5].toString()); // 正確,'string' 和 'number' 都有 toString 方法
x[6] = true; // 錯誤,布爾值不是 (string | number) 中的一種

 

聯合類型是更高級的議題,我們會在后續的章節中介紹。

Enum 枚舉

TypeScript拓展了JavaScript原生的標准數據類型集,增加了枚舉類型(enum)。枚舉是一種很有用的數據類型,就像C#等語言中一樣,它提供了一種給數字類型的值,設置易於辨別的名字的方法。

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

 

在默認情況下,枚舉類型會從數字0開始標記它的元素。我們可以通過人為地設置元素的數值來改變默認值。例如,上面的例子我們可以設置成從1開始計數:

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

 

我們甚至可以給所有的枚舉元素設置數值:

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

 

枚舉類型有一個便捷特性,我們也可以直接用數值來查找其對應的枚舉元素的名稱。舉例來說,如果我們有一個值為2,但我們不確定這個數值對應枚舉類型中的哪個元素,那我們可以直接查找這個數值對應的名稱:

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

alert(colorName);

 

Any

當我們編寫應用時,我們可能會需要描述一些類型不明確的變量。因為這些變量的值可能來源於一些動態的內容,如用戶或第三方提供的庫。在這種情況下,我們需要略過對這些變量進行的類型檢查,讓它們直接通過編譯時的檢查。為了實現這一目的,我們可以把它們標識為'any'類型:

var notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

 

使用'any'類型是處理我們已有的JavaScript代碼的一種強大的方式,我們可以用它來逐漸增加或減少在編譯過程中的類型檢查。 就像其他編程語言那樣,你可能期望使用Object來實現這個功能,但是注意在JavaScript中,Object類型僅僅允許分配任意值給他,但不能調用他的存在或可能的任何方法:

var notSure: any = 4;
notSure.ifItExists(); // 沒問題,在運行時有可能有 ifItExists 這個方法
notSure.toFixed(); // 沒問題,toFixed 是真實存在的方法 (但是編譯器不會驗證准確性)
var prettySure: Object = 4;
prettySure.toFixed(); // 錯誤,不行就是不行了,使用any吧

 

當我們知道一個類型的部分數據類型,卻又不確定所有的數據類型時,使用'any'可以為我們提供不少方便。比如你有一個數組,但是這個數組中的元素屬於不同的數據類型,那你可以這么做:

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

list[1] = 100;

 

Void

void就像any的相反面:void就是沒有,any就是所有。沒有返回值的函數就可以認為是'void'類型:

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

 

不建議聲明一個變量是 void類型,因為這個變量就只能賦值undefined 或 null

var unusable: void = undefined;

 

感謝翻譯


免責聲明!

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



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