Below you will find pages that utilize the taxonomy term “TypeScript”
Posts
TypeScript - Generics
TypeScript 支援泛型語法,使用方式如下:
function GenericsFunction<T>(param:T) { ... } ... class GenericsClass<T> { GenericsField:T; GenericsMethod(param:T) { ... } } 最後附上個簡單的使用範例:
function ShowMessage<T>(message:T) { alert(message); } ShowMessage<string>("test"); ShowMessage<number>(123); {% img /images/posts/TypeScriptGenerics/1.png %}
read morePosts
TypeScript - Class
TypeScript 的類別透過 class 關鍵字宣告,透過 new 關鍵字建立物件實體。
class MyClass { ... } var obj = new MyClass(); ... 建構子的透過 constructor 關鍵字宣告。
... constructor(...) { ... } ... 類別屬性的宣告,是透過 get/set 關鍵字定義 get/set 區塊。
... private _name: string; ... get name():string{ return this._name; } set name(value:string){ this._name = value; } ... 類別方法的宣告不需要加上 function 關鍵字,還可依需求套上不同的存取修飾符,不過目前支援 private/public,若不加上存取修飾服,預設宣告的是 public 的方法。
... MyFunction():void { ... } private PrivateFunction():void { ... } public PublicFunction():void { ... } ... 類別的繼承則是透過 extends 關鍵字。
read morePosts
TypeScript - Lambda
TypeScript 支援 Lambda 語法,語法如下:
(input parameters) => expression (input parameters) => {statement;} 寫起來就像下面這樣:
var Execute = (cmd: string, ...params: string[]): void => alert(cmd + "(" + params.join(", ") + ")"); Execute("Test", "Param1", "Param2"); {% img /images/posts/TypeScriptLambda/1.png %}
read morePosts
TypeScript - Rest Parameters
TypeScript 的方法支援不定數量的參數,使用上只要在最後一個方法的陣列參數前面加上 ... 即可。
像是下面這個例子,定義了一個接口,可傳入要執行的命令名稱與命令要帶入的參數,因為命令的參數的個數可能不定,所以這邊就可以用 Rest Parameters 去做。
function Execute(cmd: string, ...params: string[]): void { alert(cmd + "(" + params.join(", ") + ")"); } Execute("Test", "Param1", "Param2"); {% img /images/posts/TypeScriptRestParameters/1.png %}
read morePosts
TypeScript - Default Parameters
TypeScript 的 Function 支援 Default Parameters,使用上只要在參數名稱後面帶入預設的參數值,當呼叫方法時忽略該參數,該參數則會以預設的參數值下去運行。
像是下面這樣:
function sayHello(name: string = 'World') { var msg:string = 'Hello~'; if (name) msg += name; console.log(msg); } sayHello(); sayHello('Larry Nung');
read morePosts
TypeScript - Optional Parameters
TypeScript 的 Function 支援 Optional Parameters,使用上只要在參數名稱後面加上 ? 即可,但需注意 Optional Parameters 必須放在 Required Parameters 的後面。
使用起來會像下面這樣:
function sayHello(name?: string) { var msg:string = 'Hello~'; if (name) msg += name; console.log(msg); } sayHello(); sayHello('Larry Nung');
read morePosts
TypeScript - Function Types
用 JavaScript 撰寫 Function,要馬是使用 Named function,要馬就是使用 Anonymous function。
//Named function function add(x, y) { return x+y; } //Anonymous function var myAdd = function(x, y) { return x+y; }; 因為 JavaScript 不具型態的關係,Function 有時候會被傳入不如預期的資料,回傳不預期的結果。像是上述的例子可能預期是用做數值的加總,但因為不具型態的關係就有可能被傳入字串,做為字串的串接使用。
TypeScript 可以在定義方法時設定參數與回傳值的型態,像是下面這樣:
function functionName(param1: Type1, [param2: Type2, ...]): Type {...} 所以上述的程式透過 TypeScript 改寫成像下面這樣,就不會碰到本來面臨的問題了。
function add(x: number, y: number): number { return x+y; } var myAdd = function(x: number, y: number): number { return x+y; }; Link Handbook - Welcome to TypeScript
read morePosts
TypeScript - Basic Types
TypeScript 內可用的型態有 Boolean、Number、String、Array、Any、Void、Enum 這幾種。
{% img /images/posts/TypeScriptBasicTypes/1.png %}
其中 Boolean、Number、String、Array、Any、Enum 的宣告方式如下:
var variableName: Type; 所以宣告起來會像下面這樣:
var booleanVariable: boolean; var numberVariable: number; var stringVariable: string; var arrayVariable1: number[]; var arrayVariable2: Array<number>; var anyVariable: any; var enumVariable: enumName; 宣告指定的型態後,該變數就只能賦予相同型態的值,像是 Boolean 型態就只能賦予 true/false、Number 型態只能賦予數值、String 型態只能賦予字串值。若真的有需要讓變數支援賦予多種不同型態的值,只要將變數宣告成 Any 型態即可。
陣列的宣告比較特殊,支援兩種宣告方式。可以直接用型態後面接中括弧表示,也可以用 Array 的泛型的寫法。
列舉型態的宣告跟 C# 類似:
enum enumName{element1 = 1, element2, element3, ...}; 列舉參數的宣告與列舉的操作如下:
var enumValue: enumName = enumName. element1; var enumName: enumName = enumName[2]; Void 型態則是用以指定方法無回傳值時使用:
read more