Typescript:基礎型別
阿新 • • 發佈:2019-01-05
【摘要】本篇文章主要介紹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語法斷言是被允許的。