1. 程式人生 > >Typescript:基礎型別

Typescript:基礎型別

【摘要】本篇文章主要介紹Typescript的基礎型別以及宣告方法。

- Boolean

let isDone:boolean = false;

- Number

let decimal: number = 6; 
let hex: number = 0xf00d; 
let binary: number = 0b1010; 
let octal: number = 0o744;

- String

let color:string = "blue";

// 宣告模板字串(template strings)使用反引號(`)包圍字串內容,嵌入表示式使用 ${expr} 形式
let sentence: string = `Hello, my name is ${ fullName }. I'
ll be ${ age + 1 } years old next month.`;

- Array

// 第一種宣告方式
let list: number[] = [1, 2, 3];
let color: string[] = ['red', 'green', 'blue'];

// 第二種宣告方式
let list: Array<number> = [1, 2, 3];
let color: Array<string> = ['red', 'green', 'blue'];

- Tuple

let x: [string, number] = ['age'
, 18];

- Enum

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

// 預設情況下,列舉型別(enum)索引從0開始,你也可以給它們指定索引從1開始
enum Color {Red = 1, Green, Blue}
let c: Color = Color[2]; // Green

// 或者指定索引
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color[4]; // Blue

- Any

Typescript 的型別機制是為了防止賦值型別與宣告的型別不同,但是any型別卻是打破這種規則的存在

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

- Void

void 型別經常被用於沒有 return 值的方法,宣告 void 型別的變數只能給它們賦值 undefined 或 null

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

- Null and Undefined
預設情況下,null 和 undifined 可以指定給所有型別,但是在 –strictNullChecks 模式下,null 和 undifined 只能指定給 void 及其本身型別

let u: undefined = undefined;
let n: null = null;

- Never
never型別表示的是那些永不存在的值的型別。never型別是任何型別的子型別,也可以賦值給任何型別;然而,沒有型別是never的子型別或可以賦值給never型別(除了never本身之外)。 即使 any也不可以賦值給never。

// 返回never的函式必須存在無法達到的終點
function error(message: string): never {
    throw new Error(message);
}

// 推斷的返回值型別為never
function fail() {
    return error("Something failed");
}

// 返回never的函式必須存在無法達到的終點
function infiniteLoop(): never {
    while (true) {
    }
}

- Object

declare function create(o: object): void;
create({ prop: 0 }); 

- 型別斷言(Type assertions)
當你知道一個實體具有比它現有型別更確切的型別時,可以通過型別斷言(Type assertions)的方式告訴編譯器某個實體的具體型別。型別斷言(Type assertions)好比其它語言裡的型別轉換,但是不進行特殊的資料檢查和解構。 它沒有執行時的影響,只是在編譯階段起作用。

// 第一種使用 尖括號(<>) 的方式
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;

// 第二種使用 as 的方式
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

在TypeScript裡使用JSX時,只有 as語法斷言是被允許的。