Quick Start

安裝 TypeScript

官方網站(連結)說明數種下載與安裝方式;

  • 透過 node.js 安裝 : 啟動 「node.js command prompt」,並輸入下列指令;
$ npm install -g typescript
  • 直接下載可以安裝於 Microsoft Visual Studio 的版本

前言:可以支援原生 Javascript

因 Typescript 可以完全支援 Javascript,可以不用修改任何 .js code 或是 Javascript-based Coding 方式,如下;

function greeter(person) {
    return "Hello, " + person;
}

var user = "Jane User";

document.body.innerHTML = greeter(user);

然後直接透過 TypeScript 編譯器進行編譯即可。

如何進行 TypeScript 開發與編譯

  • 先開啟文件並儲存下列程式碼,附檔名為 .ts
// Person 為自定義資料型態 (以結構方式,類似 C 或 C++ 中的 struct)
interface Person {
    firstname: string;
    lastname: string;
}

// person 為變數,而其資料型態為 Person
function greeter(person : Person) {
    return "Hello, " + person.firstname + " " + person.lastname;
}

var user = {firstname: "Jane", lastname: "User"};

document.body.innerHTML = greeter(user);

上述程式碼說明如下:

  • TypeScript 中定義變數的資料型態方式為 (變數名稱):(資料型態,可為自定義類別)
  • 其中 Person 定義靜態資料型別,內包含兩個變數,firstname 與 lastname,且資料型態皆為 string
  • TypeScript 中透過 interface 來描述(定義)一個結構
  • greeter 定義一個函式,將剛已定義 person 資料型別作為參數帶入,此函式將 person 結構中的 firstname 與 lastname 進行串接並回傳一個字串。
  • var user 則是創建一個以 Person 資料結構作為模版的物件,並初始化此結構中的變數。
  • document.body.innerHTML 則是顯示出函式 greeter 的結果。
  • 將上列程式碼儲存後,儲存成 「example.ts」 放置於桌面 (舉例路徑:C:\Users\JianKaiWang\Desktop\example.ts)
  • 啟動 「node.js command prompt」,然後透過 TypeScript 編譯器 (tsc) 進行編譯,如下;(編譯完成後會產生一個 .js 檔案,檔名為 「example.js」)
$ tsc C:\Users\JianKaiWang\Desktop\example.ts
  • 而產生出來的 example.js (預設與 .ts 檔案放置在相同路徑) 如下
function greeter(person) {
    return "Hello, " + person.firstname + " " + person.lastname;
}
var user = { firstname: "Jane", lastname: "User" };
document.body.innerHTML = greeter(user);

資料型態的註解 (Type annotation)

在 TypeScript 中可以透過 (變數名稱):(資料型態) 方式來對使用的變數進行資料型態的繫結,也因此在進行 TypeScript Compile 中,會針對資料型態進行檢查,如下範例;

function greeter(person: string) {
    return "Hello, " + person;
}

var user = [0, 1, 2];

// 在 typescript 進行 compile 時會出現錯誤
document.body.innerHTML = greeter(user);

當使用 greeter 函式時,會將資料型態為 list 的變數傳入只能接受來自 string 的 greeter 函式,此時 compiler 會發覺資料型態上的錯誤而出現 error,如下,

greeter.ts(7,26): Supplied parameters do not match any signature of call target

定義介面(Interface, 結構)

TypeScript 中透過 interface 來定義一個結構,此結構內包含數個不同型態的變數,此類似於 C 或 C++ 中定義 struct 的方式。
此外,可以經由一個 dictionary 變數來初始化透過此結構產生的變數,如上述範例;

interface Person {
    firstName: string;
    lastName: string;
}

function greeter(person: Person) {
    return "Hello, " + person.firstName + " " + person.lastName;
}

var user = { firstName: "Jane", lastName: "User" };

document.body.innerHTML = greeter(user);

定義類別 (Class)

此定義方式將原本 Javascript 中雜亂的結構化資料型態進行處理。如下方的 Student 類別;

class Student {
    fullName: string;
    constructor(public firstName, public middleInitial, public lastName) {
        this.fullName = firstName + " " + middleInitial + " " + lastName;
    }
}

interface Person {
    firstName: string;
    lastName: string;
}

function greeter(person : Person) {
    return "Hello, " + person.firstName + " " + person.lastName;
}

var user = new Student("Jane", "M.", "User");

document.body.innerHTML = greeter(user);

上面 Student 類別中程式碼說明;

  • 類別 Student 中含有名為 fullname 的 公開 成員,即此成員可以直接存取
  • constructor 則為此類別的建構子,包含 3 個傳入參數,此種寫法為快速的寫法。
  • public 指類別中新創出的 公開 成員,在此物件被產生時即產生 3 個公開成員,其效果相同下方程式碼;
  • 透過 public 產生的成員,typescript 會自動產生相應的資料型態 (視傳入建構子的變數所致)
class Student {
    fullName: string;

    // 其中 firstName, middleInitial 與 lastName 定義為 string,是因為傳入建構子的變數為字串所致
    firstName: string;
    middleInitial: string;
    lastName: string;

    // ...
}

var user = new Student("Jane", "M.", "User");

// ...

使用 Typescript 所創建的 Javascript

開啟一個檔案,輸入下列 html code,並存成 .html 檔案。而使用的方式與一般使用 javascript 函式庫的方式相同。

<!DOCTYPE html>
<html>
    <head><title>TypeScript Greeter</title></head>
    <body>
        <script src="example.js"></script>
    </body>
</html>

results matching ""

    No results matching ""