安裝typescript
npm install -g typescript
接著測試看看是否能正常運作 先建立一個 helloworld.ts 內容寫入
let hi: string = "helloworld";
接著在下指令
tsc helloworld.ts
如果有產生一個對應的helloworld.js 那就代表能正常運作
var hi = "helloworld";
#Basic Types 紀錄一些Typescipt基本型態用法,主要參考自Typescript官網 Basic Types https://www.typescriptlang.org/docs/handbook/basic-types.html
##Boolean
let isDone: boolean = false;
##Number 在typescirpt中,所有numbers都是以符點數來表示,因此可以支援十六進位、十進位、八進位、二進位數值格式。
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
##String 可以像其他語言一樣,用string來表示字串型態,也可以像javascript一樣,用單引號或雙引號包住,就能表示為字串格式。
比較特別的是,如果使用反引號 - backtick/backquote ( ` ),則可以支援跨多行字串,以及可以用 ${ expr } 來崁入值。
//用string或引號來描述字串
let color: string = "blue";
color = 'red';
//使用反引號
let fullName: string = `Bob Bobbington`;
let age: number = 37;
//可以用 ${} 來崁入值
let sentence: string = `Hello, my name is ${ fullName }.
I'll be ${ age + 1 } years old next month.`
##Array
typescript像javascript一樣,允許你使用值來儲存陣列,有兩種方式可以存成陣列格式,第一種是直接使用[],第二種是宣告Array<elementType>
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
##Tuple tuple可以允許以陣列形式,描述要儲存的類型 會一一檢查每一個位置儲存的值是否符合類型
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10]; // OK
// Initialize it incorrectly
x = [10, "hello"]; // Error
##Enum 跟C#的 enum一樣,可以用來定義常數,例如下方宣告後,就可以自動得到 a=0, b=1, c=2
enum Color {a, b, c};
當然,可以自行更改起始數值,例如,從1開始,而不是從0
enum Color {a=1, b, c};
更進一步,也可以分別定義每一個的值
enum Color {a=2, b=4, c=6};
##Any 如果無法預期會存入甚麼樣的值,就可以用any 例如,再透過第三方取得的值,就可能會發生這種情況
let notSure: any = 4;
let list: any[] = [1, true, "free"];
##Void 跟any很像,當不清楚類型時,就會使用void。 通常,都會在返回 function 類型(不會返回值的情況)時,使用void。 對void而言,不能像變數一樣儲存值,僅僅可以儲存undefined或null值。
function warnUser(): void {
alert("This is my warning message");
}
let unusable: void = undefined;
##Type assertions Type assertions 稱為 斷言。 通常會發生一些情況,有些值得屬性跟你所知道的不同,這時候就可以透過type assertions的方式改變類型。 所以,斷言有點像是"相信我,改成這樣就對了"的意思。 有兩種方式可以做出斷言,第一種是使用尖括弧(angle-bracket)描述類型,第二種是用 as
let someValue: any = "這是字串";
//方法一 使用尖括弧
let strLength: number = (<string>someValue).length;
//方法二 使用 as
let strLength: number = (someValue as string).length;
關於 let
在使用Typescript時,會發現聲明變數時,幾乎都是使用 let 而不是 var 。 事實上,let跟var非常像,let是Typescript最先提出的新構想,將會在之後陸續說明原因,總而言之,使用let將可以避免掉許多常見的問題,因此建議不要使用var。
var 會產生溢出 function 或作用區域的問題, let 則可以避免掉這種情況。 例如: 下方這範例,如果改成var,最下方的b就會返回值。
function f(input: boolean) {
let a = 100;
if (input) {
// Still okay to reference 'a'
let b = a + 1;
return b;
}
// Error: 'b' doesn't exist here
return b;
}
另一方面,var 可以反覆被定義,例如 var x=1; var x=2; ,同時定義兩次不會返回錯誤。 但是對 let 而言,禁止產生聲明干擾的情況。
let x = 10;
let x = 20; // error: can't re-declare 'x' in the same scope
function f(x) {
let x = 100; // error: interferes with parameter declaration
}
function g() {
let x = 100;
var x = 100; // error: can't have both declarations of 'x'
}
let 也可以同時定義多個變數,例如:
let {a, b}: {a: string, b: number} = o;
關於 const
const 是晉級的變數聲明方式 - 常數;當使用const聲明之後,就不能再重新分配。