iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0

TypeScript中的物件導向程式設計

雖然JavaScript本身是一種物件導向語言,但並未提供對類別的支援,主要採用原型的方式實現物件建構、既成的功能,不過這對開發者並不友善。

  • TypeScript提供類別和介面的支援,使複雜邏輯程式寫起來更直覺。

類別

  • 物件包含資料與邏輯函數的實例,資料通常稱作屬性,而邏輯函數則稱作方法。
  • 首先以建立一個「人」為例:
var people = {
    name:“小傑”,
    sayHi(){
        console.log("你好,我是"+this.name);
    }
}
people.sayHi();
  • 上述的people物件封裝了name屬性及sayHi方法,當我們遇到需要很多people物件的狀況時,每個物件的屬性都不同,這時就可以使用「類別」。
  • 類別是物件的範本,在TypeScript中類別使用class定義,定義一個名為people的類別。
class People {
    name:string;
    constructor(name:string){
        this.name = name
    }
    sayHi() {
        console.log("你好,我是"+this.name);
    }
}
var p = new People("小王");
p.sayHi();
  • 類別可以快速建構出所需的物件,上方程式中People類別定義字串類型的屬性name、sayHi的方法,另外還有個叫constructor的方法,這個方法又稱建構方法,可以用來建構物件,在類別內部的方法中可使用this關鍵字來獲取呼叫此方法的物件本身。

繼承

  • 透過繼承可以很容易地擴充類別的功能,它能夠將類別按抽象程度分層。
  • 同一父類別可衍生出許多子類別,而子類別也可以成為其他類別的父類別繼續延伸。
  • 可使用extends來指定繼承關係,子類別繼承後,可自動擁有父類別的屬性及方法,除可定義獨有的屬性及方法外,還能對父類別進行修改。
class Teacher extends People {
    subject:string
    constructor(name:string, subject:string){
        super(name)
        this.subject = subject
    }
    sayHi() {
        super.sayHi()
        console.log("同學們好“);
    }
    teach() {
        console.log(this.name + "進行教學" + this.subject);
    }
}
var t = new Teacher("李老師",“TypeScript”);
t.teach();
t.sayHi();
  • 上面程式中使用的super是用來呼叫父類別的方法,若子類別有對建構方法重寫,則一定要使用super呼叫父類別的建構方法。

今天的內容大致到這邊,明天會接著介紹關於類別的其他資訊!


上一篇
Day 10
下一篇
Day 12
系列文
從零開始學習TypeScript、Vue.js !!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言