1. 程式人生 > >5分鐘入門TypeScript (翻譯自官方文件)

5分鐘入門TypeScript (翻譯自官方文件)

讓我們通過使用TypeScript來構建一個簡單的Web應用程式來入門吧

 

安裝 TypeScript

 

獲取TypeScript主要有兩種方法:

  • 通過npm (Node.js包管理器)
  • 通過安裝Visual Studio TypeScript外掛

Visual Studio 2017和VIsual Studio 2015 Update 3 預設包含了TypeScript。 如果你沒有在Visual Studio上安裝TypeScript,你仍然可以從這裡下載它。

 

對於使用NPM的使用者,通過以下命令安裝:

> npm install -g typescript

 

建立你的第一個TypeScript檔案

 

在你的編輯器裡建立一個greeter.ts的檔案, 將下面的程式碼複製到這個檔案中:

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

let user = "Jane User";

document.body.innerHTML = greeter(user);

 

編譯你的程式碼

 

我們使用了一個.ts的副檔名, 但其實這些程式碼僅使用了JavaScript。你可以直接複製貼上這些程式碼到一個已有的JavaScript程式中去使用。

在命令列中執行TypeScript編譯器:

tsc greeter.ts

這個命令將會生成一個包含了同樣JavaScript程式碼的greeter.js檔案,這樣就可以在我們的JavaScript程式中去使用TypeScript了。

現在我們開始使用一些TypeScript提供的新特性。像下面一樣新增一個 :string 型別的註解到person函式的引數中:

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

let user = "Jane User";

document.body.innerHTML 
= greeter(user);

 

型別註解

 

型別註解在TypeScript是一個記錄函式和變數預期契約的輕量級方法,在這個例子中,我們預計greeter函式將會在被呼叫時候使用一個string型別的引數。我們可以嘗試傳遞一個數組去呼叫greeter函式:

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

let user = [0, 1, 2];

document.body.innerHTML = greeter(user);

 

重新編譯,你將會看到以下的錯誤:

error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.

類似,試著在呼叫greeter時候移除所有的引數。TypeScript將會告訴你,在呼叫函式的時候使用了不是預料中個數的引數。在這兩個例子中, TypeScript可以通過基於程式碼結構和型別註解進行靜態分析。

需要注意的是,儘管有一些錯誤,但是greeter.js檔案依然會被建立。你甚至能在你的程式碼有錯誤的時候使用TypeScript,但是這種情況下TypeScript會發出警告,你的程式碼可能不會像預計的那樣執行。

 

介面

 

讓我們進一步來改進我們的示例。這裡我們使用介面來描述一個包含firstName和lastName屬性的物件。在TypeScript中如果他們的內部結構相容,那麼這兩種型別是相容的。這允許我們不用顯式的去實現一個介面,僅僅定義好介面的格式就可以。

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

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

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

document.body.innerHTML = greeter(user);
 

 

 

最後,我們使用類來擴充套件這個例子。TypeScript支援新的特性,例如支援基於類的面向物件程式設計。

這裡我們建立一個Student類,包含一個建構函式和幾個公共的欄位。注意類和介面可以很好的在一起使用,讓開發者來決定正確的抽象級別。

同樣值得注意的是,我們在建構函式引數上使用public,這是一種自動建立同名屬性的快捷方法。

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

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

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

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

document.body.innerHTML = greeter(user);

 

再次執行 tsc greeter.ts ,你將會發現像之前一樣生成了JavaScript檔案。在TypeScript中的類僅僅是針對JavaScript中常用的基於原型面向物件的簡單表達方式。

 

在你的Web程式中使用TypeScript

 

現在我們使用下面的程式碼建立 greeter.html檔案:

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

 

在瀏覽器開啟greeter.html來執行你的第一個基於TypeScript的簡單Web程式。

可選:在Visual Studio開啟greeter.ts或者複製它的程式碼到TypeScript檔案,你可以在變數上懸停以檢視其型別。注意,在某些情況下,這些型別是自動為您推斷的。重新鍵入最後一行,並根據DOM元素的型別檢視完成列表和引數幫助。將游標放在對greeter函式的呼叫上,並按F12鍵,將會跳轉到它的定義。請注意,您也可以右鍵單擊一個成員並使用重構去重新命名它。

The type information provided works together with the tools to work with JavaScript at application scale.。更多示例,請參見網站的示例部分。

 

翻譯自: http://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html