5分鍾了解TypeScript


1.安裝TypeScript

有兩種方式安裝TypeScript:

  • Via npm

  • 通過安裝VS插件,更多可參見這里

對於npm用戶,可以直接使用下面的命令行安裝:

nmp install -g TypeScript

2.創建第一個TypeScript文件

打開editor,最好使用VSCode並且安裝TypeScript插件支持。創建greeter.ts文件,並寫入:

function greeter(person) {
    return "Hello, " + person;
}
let user = "Jane User";
document.body.innerHTML = greeter(user);

3.編譯你的代碼

TypeScript文件后綴都是.ts。雖然我們使用的是ts后綴,但是上面寫的這些code就只是javascript內容,你可以直接copy一下,然后使用這些內容進行測試。打開終端,找到該文件所在目錄,執行以下命令:

tsc greeter.ts

便會生成一個greeter.js文件,里面內容如下:

function greeter(person) {
    return "Hello, " + person;
}
var user = "Jane User";
document.body.innerHTML = greeter(user);

其實剛才的ts文件內容和編譯出來的js內容是一樣的,在web application中,可以直接使用編譯出來的js文件。

現在,可以使用TypeScript的一些新特性,添加 : string來注釋person的類型:

function greeter(person: string) {
    return "Hello, " + person;
}
let user = "Jane User";
document.body.innerHTML = greeter(user);

4.Type annotations

在TypeScript中,Type annotations可以用來標識變量或者參數的類型,在上面的例子中,使用了string類型來標識person。那么這個時候一旦將代碼更改為:

function greeter(person: string) {
    return "Hello, " + person;
}
let user = [1,2,3];
document.body.innerHTML = greeter(user);

編譯器就會報錯:

greeter.ts(7,35): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.

同樣地,如果在調用greeter函數的時候什么也不傳入,則會報錯誤:

greeter.ts(7,27): error TS2554: Expected 1 arguments, but got 0.

也就是說,TypeScript會根據代碼結構和提供的類型注釋提供代碼靜態分析。

雖然報錯,但greeter.js還是被生成了,你可以繼續使用包含錯的的TypeScript,但是結果可能不會滿足你的預期。 

5.Interface

還是在上面的demo代碼基礎上進行修改,我們可以使用interface來描述一個對象有firstName和lastName兩個屬性。在TypeScript中,如果其內部結構兼容,則兩種類型兼容。這就說明了我們可以通過Interface來實現對象,而不需要implement去實現。

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);

這里需要注意,interface里面只能聲明屬性或者簽名,而無法添加方法。

6.class

TypeScript支持JavaScript的新功能,其中很重要的一個功能就是基於類的面向對象編程(OOP)。

這里創建一個Student的類,它有一個構造函數和一個屬性。看一下下面的代碼,你會發現類和Interface在一起結合的很完美,程序員可以自己決定正確的抽象。另外,還有一個public的關鍵字,和java中的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);

值得關注的是,我們將上面代碼進行編譯為js文件,你可以看到編譯后的文件為:

var Student = /** @class */ (function () {
    function Student(firstName, middleInitial, lastName) {
        this.firstName = firstName;
        this.middleInitial = middleInitial;
        this.lastName = lastName;
        this.fullName = firstName + " " + middleInitial + " " + lastName;
    }
    return Student;
}());
function greeter(person) {
    return "Hello, " + person.firstName + " " + person.lastName;
}
var user = new Student("Jane", "M.", "User");
document.body.innerHTML = greeter(user);

其實就是個Student的函數。

說了這么多,怎么能直接看到運行效果呢?很簡單,創建一個html文件,然后在里面引用編譯的js文件即可:

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

使用瀏覽器打開此html文件即可運行 ~ ~

另外,VSCode的提供也是很強大的,具體自己感受。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM