本篇內(nèi)容介紹了“typescript中接口與類使用實(shí)例分析”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司是專業(yè)的下冶網(wǎng)站建設(shè)公司,下冶接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行下冶網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!為了簡便,把typescript簡寫為ts
接口Interface
可能有些同學(xué)對(duì)于接口比較陌生,在弱類型語言的語言層面很難看到它的蹤影,不像強(qiáng)類型語言,語言層面就考慮到了。但在ts世界里,我們就可以看到它的蹤影了,說白了,它只負(fù)責(zé)定義,說明你的對(duì)象里面有些什么,也就是結(jié)構(gòu),當(dāng)然,它就不能夠被實(shí)例化了。
定義
那么,該如何定義接口呢,當(dāng)然是使用關(guān)鍵字interface
interface IA { name: string }
以上聲明了接口IA,有個(gè)屬性name,為字符串型
這樣,我們就可以給一個(gè)變量聲明IA類型并賦值初值
var a: IA = { name: 'hello' }
繼承
接口也是可以繼承的,假如你有個(gè)IB接口也包含IA的結(jié)構(gòu),就可以簡單的繼承它,并擴(kuò)展自己的屬性
interface IB extends IA { id: number }
類
類與接口類似,但它除了定義外,還有實(shí)現(xiàn),如給變量賦值,它是可以實(shí)例化的
定義
定義的關(guān)鍵字是class,相信熟悉es6的同學(xué)已經(jīng)早就用的習(xí)以為常了
class A { a: string = 'xxxxx' }
以上定義了類A,它有個(gè)字符串類型a,同時(shí)給它賦了初值xxxxx,這樣我們可以像下面這樣用,實(shí)例化它,并可以引用屬性a
var a = new A() console.log(a.a)
當(dāng)然我們也可以修改屬性a
共有,私有,受保護(hù)等成員訪問修飾符
屬性有訪問權(quán)限之分,哪些成員可以訪問,誰可以訪問
public 也就是誰都可以訪問
private 只有內(nèi)部成員可以訪問,說白了,就是自帶的函數(shù)可以訪問
protected 受保護(hù)的,除了自己,繼承了該類的都可以訪問
以上關(guān)鍵字一般加在屬性前面,不加的話,就是public
所謂成員,不要僅限于屬性,還包括方法,也叫函數(shù),但是在類中一般都叫方法
class A { public a = 'a' private b = 'b' protected c = 'c' }
注意,以上聲明的時(shí)候沒有給屬性指定類型,這是合法的,因?yàn)榭梢愿鶕?jù)后邊的初值推斷出相應(yīng)的類型
構(gòu)造函數(shù)
說到了類,自然是少不了構(gòu)造函數(shù),這個(gè)函數(shù)比較特別,是在實(shí)例化的時(shí)候調(diào)用的,也就是new的時(shí)候;強(qiáng)類型語言中一般都是以類名來命名的一個(gè)函數(shù),ts中是以constructor來定義和實(shí)現(xiàn)的,當(dāng)然嚴(yán)格來說,是js中是這樣規(guī)定的。
其實(shí)構(gòu)造函數(shù)跟普通函數(shù)沒什么區(qū)別,可以有參數(shù),函數(shù)體里面就是實(shí)現(xiàn),可以給屬性賦初值等操作,改寫以上A,把給a
即使你定義任何構(gòu)造函數(shù),也會(huì)有一個(gè)默認(rèn)構(gòu)造函數(shù)的,只是它什么都沒干
class A { a: string constructor(arg: string) { this.a = arg } }
在ts中,構(gòu)造函數(shù)還有個(gè)神奇的功能,那就是在構(gòu)造函數(shù)參數(shù)中定義和賦初值,不用在類中重復(fù)聲明,在構(gòu)造函數(shù)中賦初值,如下
class A { constructor(public a: string) }
上面我們就定義了A中的一個(gè)字符串屬性a,把構(gòu)造函數(shù)的第一個(gè)參數(shù)賦值給它
繼承
跟接口類似,類繼承也是用關(guān)鍵字extends
class B extends A { d: number = 1 }
實(shí)現(xiàn)接口
類不僅可以繼承已有類,還可以實(shí)現(xiàn)接口,要注意的是,接口中的屬性,類中必須有相應(yīng)的實(shí)現(xiàn)
實(shí)現(xiàn)的關(guān)鍵字是implements
class C implements IA { name = 'c' }
當(dāng)然你可以實(shí)現(xiàn)和繼承同時(shí)用,也是沒問題的
class D extends A implements IA { name = 'd' }
靜態(tài)成員
普通成員在每個(gè)實(shí)例中是單獨(dú)存在的,而靜態(tài)成員是在類中共享的,也就是只有一份,靜態(tài)成員聲明的方式是使用關(guān)鍵字static
class A { static sa = 'nnnn' }
以上我們就聲明了一個(gè)字符串屬性sa,并賦初值nnnn,當(dāng)需要訪問的時(shí)候,只要像下面調(diào)用就好了
A.sa
“typescript中接口與類使用實(shí)例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!