天天看點

TypeScript與面向對象

目錄

1、引

2、類(class)

3、構造函數和this

4、繼承

5、super

6、抽象類

7、接口

8、屬性的封裝

9、泛型

簡而言之就是程式之中所有的操作都需要通過對象來完成。一切操作都要通過對象,也就是所謂的面向對象,在程式中對象被分成了兩個部分資料和功能,以人為例,人的姓名、性别、年齡、身高等屬于資料,人可以說話、走路、吃飯、睡覺這些都屬于人的功能,資料在對象中被稱為屬性,而功能被稱為方法,是以簡而言之在程式中一切皆對象

readonly 表示一個隻讀屬性,不能修改,是在執行個體上的

static 表示一個靜态屬性,通過類的點文法

子類寫了constructor構造函數必須使用super繼承父類constructor構造函數的屬性

抽象方法隻能定義在抽象類中,子類必須對抽象方法進行重寫

接口的作用類似于抽象類,不同點在于接口中的所有方法和屬性都是沒有實值的,換句話說接口中的所有方法都是抽象方法。接口主要負責定義一個類的結構,接口可以去限制一個對象的接口,對象隻有包含接口中定義的所有屬性和方法時才能比對接口。同時,可以讓一個類去實作接口,實作接口時類中要保護接口中的所有屬性。

示例(檢查對象類型):

示例(實作)

public

修飾的屬性可以再任意位置通路修改預設值

private

私有屬性,私有屬性隻能在類内部進行通路修改

protected

protected受包含的屬性,隻能在目前類和目前類的子類中通路

getter方法用來讀取屬性

setter方法迎來設定屬性

getter和setter被統一稱為屬性的存儲器,定義時在方法之前添加get和set,調用的時候直接通過點文法調用

定義一個函數或類時,有些情況下無法确定其中要使用的具體類型(傳回值、屬性、參數的類型不能确定),此時泛型便能通夠發揮作用

在這個例子中,test函數又一個參數類型不确定,但是能确定的是其傳回值的類型和參數的類型是相同的,由于類型不确定所有參數和傳回值均使用了any,但是很明顯這樣做是不合适的,首先使用any會關閉TS的類型檢查,其次這樣設定也不能展現出參數和傳回值是相同的類型

通過泛型來确認參數和傳回值的類型相同

這裡的<code>&lt;T&gt;</code>就是泛型,T是我們給這個類型起的名字(不一定必須叫T),設定泛型後即可在函數中使用T來表示該類型。是以泛型其實很好了解,<code>就表示某個類型</code>

那麼如何使用上面的函數呢?

方式一(直接使用)

使用時直接傳遞參數使用,類型會由TS自動推斷出來,但有時編譯器無法自動判斷時還需要使用下面的方式

方式二(指定類型)

也可以在函數後手動指定泛型

可以同時指定多個泛型,泛型間使用逗号隔開

使用泛型時,完全可以将泛型當成是一個普通的類去使用

類中同樣可以使用泛型

除此之外,也可以對泛型的範圍進行限制

使用T extends MyInter表示泛型T必須是MyInter的子類,不一定非要使用接口類和抽象類同樣适用。

繼續閱讀