亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Hi,我是前端人,今日與君共勉!本篇文章主要介紹 typeScript 中類的定義、類的繼承、類中成員修飾符等內(nèi)容。


typeScript 中的類與 ES6 中的類非常相似,如果不知道 ES6 中的類,建議先學(xué)習(xí)下 ES6 中的 class 。本篇文章重點介紹 typeScript 中的類定義、繼承以及修飾符。

1、類的定義

類描述了所創(chuàng)建的對象共同的屬性和方法。typeScript 支持面向?qū)ο蟮乃刑匦裕热珙悺⒔涌诘取?/p>

在 typeScript 中定義類的時候,使用 class 關(guān)鍵字,類名首字母使用大寫,類可以包含以下三個模塊:

  • 字段 - 字段是類里面聲明的變量,表示與對象有關(guān)的屬性。
  • 構(gòu)造函數(shù) - 類實例化時自動調(diào)用,可以為實例化的對象分配內(nèi)存。
  • 方法 - 方法為對象要執(zhí)行的某種操作。

定義屬性的時候,需要添加屬性類型,構(gòu)造函數(shù)中的參數(shù)也需要加類型,引用任何一個類的成員的時候都用 this ,this 關(guān)鍵字表示當(dāng)前類實例化的對象。使用 new 關(guān)鍵字來實例化對象,并初始化它。如示例:

class Web{
 workTime: string
 constructor(n:string) {
  this.workTime = n
 }
 showWork(){
  return "搬磚的前端"
 }
}
let qq = new Web("五年")
console.log(qq.showWork());
console.log(qq.workTime);

編譯以上代碼,得到的 js 代碼如下:

"use strict";
class Web {
 constructor(n) {
  this.workTime = n;
 }
 showWork() {
  return "搬磚的前端";
 }
}
let qq = new Web("五年");
console.log(qq.showWork());
console.log(qq.workTime);

2、類的繼承

typeScript 支持繼承類,即可以在創(chuàng)建類的時候繼承一個已存在的類,類繼承的時候使用 extends 關(guān)鍵字,基于類的程序設(shè)計中一種最基本的模式是允許使用繼承來擴(kuò)展現(xiàn)有的類。比如:

class Dirnks{
 name: string
 constructor(n: string) {
  this.name = n
 }
 save(m: string) {
  console.log(`${this.name}飲料應(yīng)該${m}`);
 }
}
class Soda extends Dirnks{
 constructor(n: string) {
  super(n)
 }
}
let kele = new Soda("可樂")
kele.save("冷藏")

上述示例是一個最基本的類繼承,其中 Soda 繼承了 Dirnks 的屬性和方法,其中 Soda 是一個派生類,也叫做子類,Dirnks 是一個基類,也叫超類或父類。

派生類包含了一個構(gòu)造函數(shù),構(gòu)造函數(shù)必須調(diào)用 super() ,會執(zhí)行基類的構(gòu)造函數(shù)。需要注意的是:在子類構(gòu)造函數(shù)里訪問 this 的屬性之前,一定要先調(diào)用 super ,這是 typeScript 強(qiáng)制執(zhí)行的一條重要規(guī)則。

如果父類和子類都包含某一方法時,方法名相同,但是具體執(zhí)行內(nèi)容不同的時候,該執(zhí)行哪一個方法呢?

修改上述實例,給子類也添加一個方法,代碼如下:

class Dirnks{
 name: string
 constructor(n: string) {
  this.name = n
 }
 save(m: string) {
  console.log(`${this.name}飲料應(yīng)該${m}`);
 }
}
class Soda extends Dirnks{
 constructor(n: string) {
  super(n)
 }
 save() {
  return "存儲方法"
 }
}
let kele = new Soda("可樂")
console.log(kele.save());

編譯以上代碼啊,得到的 js 代碼如下:

"use strict";
class Dirnks {
 constructor(n) {
  this.name = n;
 }
 save(m) {
  console.log(`${this.name}飲料應(yīng)該${m}`);
 }
}
class Soda extends Dirnks {
 constructor(n) {
  super(n);
 }
 save() {
  return "存儲方法";
 }
}
let kele = new Soda("可樂");
console.log(kele.save());

此時會執(zhí)行子類中的方法。其原理是,類繼承后,子類可以對父類的方法進(jìn)行重新定義,這個過程稱之為方法的重寫。

typeScript 中子類只能繼承一個父類,雖然不支持繼承多個類,但是支持多重繼承。如下:

class One{
 name: string
 constructor(n: string) {
  this.name = n
 }
 show() {
  return "展示"
 }
}
class Two extends One{
 constructor(n:string) {
  super(n)
 }
}
class Three extends Two{
 constructor(n: string) {
  super(n)
 }
}
let three = new Three("剁成")
console.log(three.show());

3、修飾符

在 typeScript 中,可以使用訪問控制符來保護(hù)對類、變量、方法和構(gòu)造函數(shù)的訪問。typeScript 支持 3 種不同的訪問權(quán)限,分別為:

  • public(默認(rèn)) - 公有,表示共享的屬性和方法。可以在任何地方被訪問。
  • protected - 受保護(hù),表示屬性和方法被保護(hù),可以被自身以及子類訪問,不能在類外面使用。
  • private - 私有,只能被其定義所在的類訪問。
  • readonly - 只讀,只讀屬性必須在聲明時或構(gòu)造函數(shù)里初始化。

理解 public

在上邊類中的成員定義的時候,沒有明確使用任何修飾符,默認(rèn)的就是 public ,所以可以將上面的類改寫為:

class HH{
 public name: string
 public constructor(n: string) {
  this.name = n
 }
}
let h = new HH("HH")
console.log(h.name);

使用 public 之后,對上面的應(yīng)用并沒有任何影響。

它的特點:被它標(biāo)記的成員在類的里面、子類里面、類外面都可以訪問到。

理解 protected

類中添加 protected 修飾符來修飾成員時,將上述實例的 public 修飾符修改為 protected 如下:

class HH{
 protected name: string
 constructor(n: string) {
  this.name = n
 }
}
let h = new HH("HH")
console.log(h.name); // 此處報錯,提示 屬性"name"受保護(hù),只能在類 HH 及子類中訪問

它的特點:被它標(biāo)記的成員在類的里面、子類里面能使用,但是在類的外面不能使用。

理解 private

class HH{
 private name: string
 constructor(n: string) {
  this.name = n
 }
}
class H extends HH{
 constructor(n: string) {
  super(n)
 }
 show() {
  console.log(this.name); // 報錯
 }
}
let h = new H("HH")
console.log(h.name);  // 報錯
h.show()

上面的示例報錯,提示:屬性“name”為私有屬性,只能在類“HH”中訪問。

它的特點:被它標(biāo)記的成員不能再聲明它的類的外部訪問。

分享到:
標(biāo)簽:TypeScript
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定