typescript探索(二) 介面與類

2021-09-13 03:42:58 字數 2194 閱讀 4349

為了簡便,以後把typescript簡寫為ts
可能有些同學對於介面比較陌生,在弱型別語言的語言層面很難看到它的蹤影,不像強型別語言,語言層面就考慮到了。但在ts世界裡,我們就可以看到它的蹤影了,說白了,它只負責定義,說明你的物件裡面有些什麼,也就是結構,當然,它就不能夠被例項化了。

那麼,該如何定義介面呢,當然是使用關鍵字inte***ce

inte***ce ia
以上宣告了介面ia,有個屬性name,為字串型

這樣,我們就可以給乙個變數宣告ia型別並賦值初值

var a: ia =
介面也是可以繼承的,假如你有個ib介面也包含ia的結構,就可以簡單的繼承它,並擴充套件自己的屬性

inte***ce ib extends ia
類與介面類似,但它除了定義外,還有實現,如給變數賦值,它是可以例項化的

定義的關鍵字是class,相信熟悉es6的同學已經早就用的習以為常了

class a
以上定義了類a,它有個字串型別a,同時給它賦了初值***xx,這樣我們可以像下面這樣用,例項化它,並可以引用屬性a

var a = new a()

console.log(a.a)

當然我們也可以修改屬性a

屬性有訪問許可權之分,哪些成員可以訪問,誰可以訪問

以上關鍵字一般加在屬性前面,不加的話,就是public

所謂成員,不要僅限於屬性,還包括方法,也叫函式,但是在類中一般都叫方法
class a
注意,以上宣告的時候沒有給屬性指定型別,這是合法的,因為可以根據後邊的初值推斷出相應的型別
說到了類,自然是少不了建構函式,這個函式比較特別,是在例項化的時候呼叫的,也就是new的時候;強型別語言中一般都是以類名來命名的乙個函式,ts中是以constructor來定義和實現的,當然嚴格來說,是js中是這樣規定的。

其實建構函式跟普通函式沒什麼區別,可以有引數,函式體裡面就是實現,可以給屬性賦初值等操作,改寫以上a,把給a

即使你定義任何建構函式,也會有乙個預設建構函式的,只是它什麼都沒乾

class a 

}

ts中,建構函式還有個神奇的功能,那就是在構造函式引數中定義和賦初值,不用在類中重複宣告,在建構函式中賦初值,如下

class a
上面我們就定義了a中的乙個字串屬性a,把建構函式的第乙個引數賦值給它

跟介面類似,類繼承也是用關鍵字extends

class b extends a
類不僅可以繼承已有類,還可以實現介面,要注意的是,介面中的屬性,類中必須有相應的實現

實現的關鍵字是implements

class c implements ia
當然你可以實現和繼承同時用,也是沒問題的

class d extends a implements ia
普通成員在每個例項中是單獨存在的,而靜態成員是在類中共享的,也就是只有乙份,靜態成員宣告的方式是使用關鍵字static

class a
以上我們就宣告了乙個字串屬性sa,並賦初值nnnn,當需要訪問的時候,只要像下面呼叫就好了

a.sa

TypeScript 基礎2 介面

介面通常以inte ce來宣告,介面是抽象方法的集合,即只宣告,不定義具體值。類描述物件的屬性和方法。介面則包含類要實現的方法 除非實現介面的類是抽象類,否則該類要定義介面中的所有方法 乙個實現介面的類,必須實現介面內所描述的所有方法,否則就必須宣告為抽象類。介面支援多繼承,乙個類可以實現多個介面 ...

typescript基礎知識(四)介面

在我的理解中,介面是用於對一系列方法 屬性定義一些標準化的內容,在typescript中體現為對型別的標準化,使用inte ce關鍵字來定義乙個介面 屬性介面針對於物件的屬性標準化 inte ce information function person info information void,a...

面試總結(二) 介面測試

postman 中 通過斷言定義變數,後續通過 呼叫變數,然後把測試用例在集合中執行即可 jmeter 中 通過後置處理器中的 json 提取器或者正規表示式提取器定義變數,後續通過 呼叫變數。200 請求成功 201 新增成功 204 刪除成功 301 永久重定項 302 臨時重定項 400 ba...