本系列目的: 列出TypeScript與JavaScript的不同點, 縮小文件內容, 提高學習速度. 原文件地址: https://www.tslang.cn/index.html

基礎型別

let isDone: boolean = false;
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d; // 16進位制
let binaryLiteral: number = 0b1010; // 2進位制
let octalLiteral: number = 0o744; // 8進位制
let name: string = "bob";
let unusable: void = undefined; // 只能賦值undefined和null:
function create(o: object | null): void; // 傳入引數只支援object或者null, 返回值為null或undefined
let notSure: any = 4; // 同any字面意思, 什麼型別都可以
let list: any[] = [1, true, "free"];

// 陣列兩種表示形式
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];


// 元組 Tuple
let x: [string, number];
x = ['hello', 10]; // OK
// 對於越界元素 字串可以賦值給(string | number)型別
x[3] = 'world'; // OK



// 列舉
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
// 預設情況下,從0開始為元素編號。 你也可以手動的指定成員的數值。 例如,我們將上面的例子改成從 1開始編號:
enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;
// 或者,全部都採用手動賦值:
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
// 列舉型別提供的一個便利是你可以由列舉的值得到它的名字。 例如,我們知道數值為2,但是不確定它對映到Color裡的哪個名字,我們可以查詢相應的名字:
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];
console.log(colorName);  // 顯示'Green'因為上面程式碼裡它的值是2




// never型別表示的是那些永不存在的值的型別。 例如, never型別是那些總是會丟擲異常或根本就不會有返回值的函式表示式或箭頭函式表示式的返回值型別; 變數也可能是 never型別,當它們被永不為真的型別保護所約束時。
// 返回never的函式必須存在無法達到的終點
function error(message: string): never {
    throw new Error(message);
}