TypeScript-Basic
typescript之旅
1.TypeScript-Basic
2.TypeScript interface
3.Typescript-module(1)
4.TypeScript Modules(2)
5.Typescript tsconfig
6.TypeScript Functions
7.Typescript Class
基礎
-
今天講的很簡單,是一些很基礎的東西,但它們會讓你對typescript眼前一亮
型別
-
boolean
-
number
-
string
-
array
-
tuple+聯合型別(額,這個很難懂,後面有解釋)
-
enum
-
any
-
void
OK,如何宣告一個變數的型別呢 ?
屁股後面加:
-
let isDone:boolean = false;
-
let decLiteral: number = 6;
-
let name: string = "bob";
-
let list: number[] = [1, 2, 3];
-
let x: [string, number];
-
enum Color {Red, Green, Blue};let c: Color = Color.Green;
-
let notSure: any = 4;
問題
-
關於強制型別轉換的問題
如果你使用過c語言,那你一定知道,兩個相容型別的轉換需要使用
char* a = (char*)10000;
,那typescript中any相容所有型別,所以:
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
記住:()是c語言,<>是typescript
還有一種寫法:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
關於tuple+聯合型別
需求:表示一個只有兩個元素,且一個字串一個數字的陣列(特定元素數量和型別)
let x: [string, number];
我們也叫他tuple,其實它叫什麼無所謂,重要的是:
-
元素數量固定
-
元素型別確定
// Declare a tuple type
let x: [string, number];
// Initialize it
x = [`hello`, 10]; // OK
// Initialize it incorrectly
x = [10, `hello`]; // Error
你說是數量固定的,我非要越界呢?
不得不說,很無語的設計,越界之後就是聯合型別
x[3] = `world`; // OK, 字串可以賦值給(string | number)型別
越界了,但是沒報錯。其實只要你後面只放string和number型別都沒錯,因為越界之後變型別。變成聯合型別嘍!