成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一份不可多得的 TypeScript 學習筆記

開發 前端
本篇文章主要介紹TypeScript 中類的定義、類的繼承、類中成員修飾符等內容。

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

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

1、類的定義

類描述了所創建的對象共同的屬性和方法。typeScript 支持面向對象的所有特性,比如類、接口等。

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

  • 字段 - 字段是類里面聲明的變量,表示與對象有關的屬性。
  • 構造函數 - 類實例化時自動調用,可以為實例化的對象分配內存。
  • 方法 - 方法為對象要執行的某種操作。

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

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 支持繼承類,即可以在創建類的時候繼承一個已存在的類,類繼承的時候使用 extends 關鍵字,基于類的程序設計中一種最基本的模式是允許使用繼承來擴展現有的類。比如:

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

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

派生類包含了一個構造函數,構造函數必須調用 super() ,會執行基類的構造函數。需要注意的是:在子類構造函數里訪問 this 的屬性之前,一定要先調用 super ,這是 typeScript 強制執行的一條重要規則。

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

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

class Dirnks{
name: string
constructor(n: string) {
this.name = n
}
save(m: string) {
console.log(`${this.name}飲料應該${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}飲料應該${m}`);
}
}
class Soda extends Dirnks {
constructor(n) {
super(n);
}
save() {
return "存儲方法";
}
}
let kele = new Soda("可樂");
console.log(kele.save());

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

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 中,可以使用訪問控制符來保護對類、變量、方法和構造函數的訪問。typeScript 支持 3 種不同的訪問權限,分別為:

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

理解 public

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

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

使用 public 之后,對上面的應用并沒有任何影響。

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

理解 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"受保護,只能在類 HH 及子類中訪問

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

理解 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”中訪問。

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

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2017-10-30 09:53:05

深度學習技巧指南

2019-11-11 09:10:19

機器學習Python數據

2019-05-28 06:00:35

華為開發者5G

2017-11-02 14:20:44

數據科學簡歷數據科學家

2024-02-26 00:06:00

排序學習算法斯奇拉姆

2018-08-15 13:49:06

數據分析學習Python

2013-03-07 09:21:58

Webkit

2021-04-19 09:00:54

Python批量下載視頻下載器

2009-04-23 09:31:36

2019-01-02 07:43:51

機器學習人工智能學歷

2020-10-11 21:52:10

數據AI指南

2020-01-02 14:13:01

機器學習模型部署預測

2020-07-15 15:38:15

人臉識別照片活化手機

2015-07-14 13:56:10

2009-10-22 09:04:13

Windows 7系統特性

2019-03-24 14:14:40

代碼閱讀源代碼

2012-06-29 10:52:48

聯想激光打印機

2024-03-22 16:12:09

Sora工具OpenAI

2015-03-19 15:17:11

2018-07-29 15:33:04

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 麻豆av网| 亚洲高清一区二区三区 | 日韩成人av在线 | 一区二区在线看 | 亚洲日本免费 | 69av网| 欧美视频在线免费 | 羞羞视频在线观看 | 精品伊人久久 | 亚洲国产一区二区三区在线观看 | 亚洲国产精品第一区二区 | 在线视频第一页 | 中文字幕乱码视频32 | 99国产精品久久久久久久 | 91久久国产综合久久 | 国产精品久久久久无码av | 日韩免费在线 | 久久精品综合 | 亚洲成人在线免费 | av片在线免费看 | 中文字字幕一区二区三区四区五区 | 国产精品日产欧美久久久久 | 国产精品国产亚洲精品看不卡15 | 国产精品一区二区在线播放 | 国产毛片久久久 | 国产综合久久久久久鬼色 | 亚洲视频免费观看 | 亚洲综合视频 | 日韩视频在线播放 | 欧美日本韩国一区二区三区 | 天天影视亚洲综合网 | 国产精品久久久久久亚洲调教 | 国产一区二区中文字幕 | 国产精品久久久亚洲 | 欧美亚洲一区二区三区 | 精品国产乱码久久久久久88av | www久久99| 男人的天堂avav | 91久久精| 欧美日韩国产精品一区 | 国产精品一区二区在线观看 |