精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官:說說你對 TypeScript 中類的理解?應(yīng)用場景?

開發(fā) 前端
傳統(tǒng)的面向?qū)ο笳Z言基本都是基于類的,JavaScript 基于原型的方式讓開發(fā)者多了很多理解成本。

[[421917]]

本文轉(zhuǎn)載自微信公眾號「JS每日一題」,作者灰灰。轉(zhuǎn)載本文請聯(lián)系JS每日一題公眾號。

 

一、是什么

類(Class)是面向?qū)ο蟪绦蛟O(shè)計(OOP,Object-Oriented Programming)實現(xiàn)信息封裝的基礎(chǔ)

類是一種用戶定義的引用數(shù)據(jù)類型,也稱類類型

傳統(tǒng)的面向?qū)ο笳Z言基本都是基于類的,JavaScript 基于原型的方式讓開發(fā)者多了很多理解成本

在 ES6 之后,JavaScript 擁有了 class 關(guān)鍵字,雖然本質(zhì)依然是構(gòu)造函數(shù),但是使用起來已經(jīng)方便了許多

但是JavaScript 的class依然有一些特性還沒有加入,比如修飾符和抽象類

TypeScript 的 class 支持面向?qū)ο蟮乃刑匦裕热?類、接口等

二、使用方式

定義類的關(guān)鍵字為 class,后面緊跟類名,類可以包含以下幾個模塊(類的數(shù)據(jù)成員):

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

如下例子:

  1. class Car {  
  2.     // 字段  
  3.     engine:string;  
  4.   
  5.     // 構(gòu)造函數(shù)  
  6.     constructor(engine:string) {  
  7.         this.engine = engine  
  8.     }   
  9.   
  10.     // 方法  
  11.     disp():void {  
  12.         console.log("發(fā)動機(jī)為 :   "+this.engine)  
  13.     }  

繼承

類的繼承使用過extends的關(guān)鍵字

  1. class Animal { 
  2.     move(distanceInMeters: number = 0) { 
  3.         console.log(`Animal moved ${distanceInMeters}m.`); 
  4.     } 
  5.  
  6. class Dog extends Animal { 
  7.     bark() { 
  8.         console.log('Woof! Woof!'); 
  9.     } 
  10.  
  11. const dog = new Dog(); 
  12. dog.bark(); 
  13. dog.move(10); 
  14. dog.bark(); 

Dog是一個 派生類,它派生自 Animal 基類,派生類通常被稱作子類,基類通常被稱作 超類

Dog類繼承了Animal類,因此實例dog也能夠使用Animal類move方法

同樣,類繼承后,子類可以對父類的方法重新定義,這個過程稱之為方法的重寫,通過super關(guān)鍵字是對父類的直接引用,該關(guān)鍵字可以引用父類的屬性和方法,如下:

  1. class PrinterClass {  
  2.    doPrint():void { 
  3.       console.log("父類的 doPrint() 方法。")  
  4.    }  
  5. }  
  6.   
  7. class StringPrinter extends PrinterClass {  
  8.    doPrint():void {  
  9.       super.doPrint() // 調(diào)用父類的函數(shù) 
  10.       console.log("子類的 doPrint()方法。"
  11.    }  

修飾符

可以看到,上述的形式跟ES6十分的相似,typescript在此基礎(chǔ)上添加了三種修飾符:

  • 公共 public:可以自由的訪問類程序里定義的成員
  • 私有 private:只能夠在該類的內(nèi)部進(jìn)行訪問
  • 受保護(hù) protect:除了在該類的內(nèi)部可以訪問,還可以在子類中仍然可以訪問

私有修飾符

只能夠在該類的內(nèi)部進(jìn)行訪問,實例對象并不能夠訪問

并且繼承該類的子類并不能訪問,如下圖所示:

受保護(hù)修飾符

跟私有修飾符很相似,實例對象同樣不能訪問受保護(hù)的屬性,如下:

有一點不同的是 protected 成員在子類中仍然可以訪問

除了上述修飾符之外,還有只讀「修飾符」

只讀修飾符

通過readonly關(guān)鍵字進(jìn)行聲明,只讀屬性必須在聲明時或構(gòu)造函數(shù)里被初始化,如下:

除了實例屬性之外,同樣存在靜態(tài)屬性

靜態(tài)屬性

這些屬性存在于類本身上面而不是類的實例上,通過static進(jìn)行定義,訪問這些屬性需要通過 類型.靜態(tài)屬性 的這種形式訪問,如下所示:

  1. class Square { 
  2.     static width = '100px' 
  3.  
  4. console.log(Square.width) // 100px 

上述的類都能發(fā)現(xiàn)一個特點就是,都能夠被實例化,在 typescript中,還存在一種抽象類

抽象類

抽象類做為其它派生類的基類使用,它們一般不會直接被實例化,不同于接口,抽象類可以包含成員的實現(xiàn)細(xì)節(jié)

abstract關(guān)鍵字是用于定義抽象類和在抽象類內(nèi)部定義抽象方法,如下所示:

  1. abstract class Animal { 
  2.     abstract makeSound(): void; 
  3.     move(): void { 
  4.         console.log('roaming the earch...'); 
  5.     } 

這種類并不能被實例化,通常需要我們創(chuàng)建子類去繼承,如下:

  1. class Cat extends Animal { 
  2.  
  3.     makeSound() { 
  4.         console.log('miao miao'
  5.     } 
  6.  
  7. const cat = new Cat() 
  8.  
  9. cat.makeSound() // miao miao 
  10. cat.move() // roaming the earch... 

三、應(yīng)用場景

除了日常借助類的特性完成日常業(yè)務(wù)代碼,還可以將類(class)也可以作為接口,尤其在 React 工程中是很常用的,如下:

export default class Carousel extends React.Component

由于組件需要傳入 props 的類型 Props ,同時有需要設(shè)置默認(rèn) props 即 defaultProps,這時候更加適合使用class作為接口

先聲明一個類,這個類包含組件 props 所需的類型和初始值:

  1. // props的類型 
  2. export default class Props { 
  3.   public children: Array<React.ReactElement<any>> | React.ReactElement<any> | never[] = [] 
  4.   public speed: number = 500 
  5.   public height: number = 160 
  6.   public animation: string = 'easeInOutQuad' 
  7.   public isAuto: boolean = true 
  8.   public autoPlayInterval: number = 4500 
  9.   public afterChange: () => {} 
  10.   public beforeChange: () => {} 
  11.   public selesctedColor: string 
  12.   public showDots: boolean = true 

當(dāng)我們需要傳入 props 類型的時候直接將 Props 作為接口傳入,此時 Props 的作用就是接口,而當(dāng)需要我們設(shè)置defaultProps初始值的時候,我們只需要:

  1. public static defaultProps = new Props() 

Props 的實例就是 defaultProps 的初始值,這就是 class作為接口的實際應(yīng)用,我們用一個 class 起到了接口和設(shè)置初始值兩個作用,方便統(tǒng)一管理,減少了代碼量

參考文獻(xiàn)

https://www.tslang.cn/docs/handbook/classes.html

 

https://www.runoob.com/typescript/ts-class.html

 

責(zé)任編輯:武曉燕 來源: JS每日一題
相關(guān)推薦

2021-09-08 07:49:34

TypeScript 泛型場景

2021-09-16 07:52:18

算法應(yīng)用場景

2021-09-10 06:50:03

TypeScript裝飾器應(yīng)用

2021-11-05 07:47:56

代理模式對象

2021-11-09 08:51:13

模式命令面試

2021-11-10 07:47:49

組合模式場景

2021-08-16 08:33:26

git

2021-11-03 14:10:28

工廠模式場景

2021-09-28 07:12:09

測試路徑

2021-11-11 16:37:05

模板模式方法

2021-11-22 23:50:59

責(zé)任鏈模式場景

2021-09-29 07:24:20

場景數(shù)據(jù)

2021-10-13 18:01:33

快速排序場景

2021-10-08 09:59:32

冒泡排序場景

2021-10-09 10:25:41

排序應(yīng)用場景

2021-11-04 06:58:32

策略模式面試

2021-05-31 10:35:34

TCPWebSocket協(xié)議

2021-06-01 08:25:06

Node.jsJavaScript運(yùn)行

2021-10-18 07:51:39

回溯算法面試

2021-10-11 09:38:41

開源
點贊
收藏

51CTO技術(shù)棧公眾號

日韩欧美高清在线播放| 免费a在线观看| 欧美福利在线| 欧美精品一区二区在线播放| 国产玉足脚交久久欧美| 天堂在线视频免费观看| 天堂资源在线中文精品| 色琪琪综合男人的天堂aⅴ视频| 国产又粗又猛大又黄又爽| 欧美v亚洲v| 99久久精品免费| 图片区小说区区亚洲影院| 一区二区成人在线视频| 日韩av免费在线观看| 日本一区二区视频在线播放| 97色婷婷成人综合在线观看| 亚洲一区二区三区不卡国产欧美 | 亚洲成人日韩在线| 欧洲av一区二区| 国产精品嫩草影院av蜜臀| 成人动漫在线观看视频| 销魂美女一区二区| 狠狠噜噜久久| 色偷偷偷亚洲综合网另类 | 亚洲午夜国产成人| 亚洲sss视频在线视频| 色噜噜狠狠一区二区三区| 精品欧美在线观看| 日本不卡视频在线| 久久久久成人精品| 国产精品18在线| 欧美男男freegayvideosroom| 欧美在线一二三四区| 欧美a级免费视频| 成人动漫在线播放| 成人av第一页| 亚洲已满18点击进入在线看片| 亚洲精品国产精品乱码| 亚洲第一偷拍| 夜夜嗨av一区二区三区四区| 一级少妇精品久久久久久久| 9.1麻豆精品| 色婷婷综合中文久久一本| 艳色歌舞团一区二区三区| 青青久在线视频| 成人免费看的视频| 91九色国产在线| 中文字幕免费视频观看| 国产亚洲毛片| 久久久影视精品| www深夜成人a√在线| 欧美黑人一级片| 亚洲一级大片| 欧美精品久久99| 99视频在线免费| 小视频免费在线观看| 一区二区在线观看av| 亚洲在线色站| av片在线免费观看| 国产日韩欧美一区二区三区综合| 国内一区在线| 少妇高潮久久久| 成人免费三级在线| 国产精品久久久久久久天堂第1集| 国产精品探花视频| 韩国女主播成人在线观看| 国产女人18毛片水18精品| 国产亚洲欧美日韩高清| 肉色丝袜一区二区| 国产成人精品综合| 成人免费一级片| 蜜桃一区二区三区四区| 国产精品一区二区三区在线播放 | 在线观看日韩av先锋影音电影院| 精品中文字幕av| 中文字幕乱码在线播放| 欧美性黄网官网| www黄色av| 欧美精品总汇| 欧美色网站导航| 色婷婷一区二区三区av免费看| 成人自拍视频网| 欧美日韩在线电影| 欧美又黄又嫩大片a级| 欧美专区一区| 亚洲成人激情在线观看| 亚洲一区二区三区四区五区六区| 美女网站色精品尤物极品姐弟| 亚洲国产精彩中文乱码av| 国产乱了高清露脸对白| 欧美亚洲国产精品久久| 久热精品在线视频| 久草网在线观看| 国产一区导航| 一本色道久久综合一区| 欧美日韩国产va另类| 久久精品第一页| 国产精品一区亚洲| 国产剧情日韩欧美| www.97超碰| 2020日本不卡一区二区视频| 色女人综合av| 亚洲精品天堂| 日韩欧美亚洲国产一区| 性chinese极品按摩| 亚洲精选av| 日韩乱码在线视频| fc2ppv在线播放| 亚洲电影在线| 国产精品高清在线| 亚洲精品一区二区三区不卡| 久久久99精品久久| 久久综合亚洲精品| 色婷婷综合久久久中字幕精品久久| 欧美久久久久久久久中文字幕| 香蕉视频免费网站| 不卡视频在线| 国内精品久久久久久| 成人黄色三级视频| 白白色 亚洲乱淫| 亚洲a∨一区二区三区| 国产美女一区视频| 欧美蜜桃一区二区三区| 给我免费观看片在线电影的| 99久久婷婷| 国产91免费看片| 刘亦菲毛片一区二区三区| 国产精品网友自拍| 99热在线这里只有精品| 欧美日韩国产一区二区在线观看| 亚洲色图综合久久| 国产精品suv一区二区| 麻豆久久久久久| 久久99久久精品国产| bestiality新另类大全| 色av综合在线| 50一60岁老妇女毛片| 在线精品国产| 成人高清视频观看www| 美女毛片在线看| 天堂精品在线视频| 日韩一级片网址| 免费黄在线观看| 宅男噜噜噜66一区二区 | 黑人一区二区三区| 亚洲欧美日韩中文在线| 日本亚洲欧美在线| 国产成人小视频| 伊人久久青草| 成人午夜毛片| 在线日韩日本国产亚洲| 亚洲GV成人无码久久精品| 成人深夜视频在线观看| 亚洲小视频在线播放| 玖玖精品在线| 在线不卡国产精品| 波多野结衣家庭主妇| 久久天天做天天爱综合色| 欧美精品一区二区三区三州| av在线亚洲色图| 欧美老女人性生活| www.色视频| 一级中文字幕一区二区| 特黄特色免费视频| 激情文学一区| 精品国产一二| 在线天堂中文资源最新版| 亚洲精品福利在线| av大全在线观看| 国产清纯在线一区二区www| 九热视频在线观看| 青草国产精品| 成人妇女免费播放久久久| 麻豆网站在线| 欧美一个色资源| 国产一级视频在线播放| av资源网一区| 97在线免费公开视频| 欧美综合一区| 91久久久亚洲精品| 国内在线免费视频| 日韩av在线网站| 日韩免费在线视频观看| 久久免费看少妇高潮| 麻豆一区二区三区视频| 91精品国产乱码久久久久久久| 91入口在线观看| 黄视频免费在线看| 在线视频中文亚洲| 在线视频欧美一区| 69堂精品视频在线播放| 久久精品亚洲一区| 免费国产精品视频| 一本大道久久a久久综合| 国产精品情侣呻吟对白视频| 国精品**一区二区三区在线蜜桃 | 岛国在线视频| 日韩欧美在线网站| 毛片在线免费视频| 国产精品久久久久久户外露出| 1314成人网| 亚洲欧美久久久| 在线免费观看成人| 欧美网色网址| 91在线中文字幕| 亚洲欧洲自拍| 欧美裸体xxxx极品少妇| 青青青草原在线| 91麻豆精品国产| 日韩欧美在线观看免费| 亚洲色图视频网站| 少妇大叫太粗太大爽一区二区| 久久国产夜色精品鲁鲁99| 搞av.com| 91成人国产| 欧美精品二区三区四区免费看视频 | 日韩精品一区二区三| 国产精品久久久久久久岛一牛影视 | 思思99re6国产在线播放| 91精品麻豆日日躁夜夜躁| 可以免费在线观看的av| 亚洲美女屁股眼交3| 日本成人免费视频| 91在线视频免费91| 91大神免费观看| 男女男精品视频网| 欧美精品99久久| 激情欧美国产欧美| 路边理发店露脸熟妇泻火| 欧美色图在线播放| 久久综合九色综合网站| 亚洲网一区二区三区| 国产欧美在线视频| 欧美舌奴丨vk视频| 2017欧美狠狠色| 国产成人精品福利一区二区三区 | 乱亲女h秽乱长久久久| 7777精品伊久久久大香线蕉语言| 日韩精品麻豆| 欧美做受高潮电影o| caoporn视频在线观看| 另类色图亚洲色图| 日本最新在线视频| 国产亚洲福利一区| 五月天婷婷激情网| 欧美大黄免费观看| 国产成人精品白浆久久69| 欧美日韩一二三区| 国产男人搡女人免费视频| 欧美视频裸体精品| 中文字幕一区二区三区精品| 夜夜嗨av一区二区三区中文字幕| 四虎地址8848| 中文字幕一区二区三区四区不卡 | 中文字幕不卡三区| 人人爽人人爽人人片| 久久精品男人的天堂| 成年人免费观看视频网站| 99久久精品国产网站| 在线观看国产三级| 99精品久久免费看蜜臀剧情介绍| 国产精品亚洲一区二区无码| 国产91丝袜在线播放| 亚洲av无码久久精品色欲| 国产麻豆精品视频| 97中文字幕在线观看| 丰满白嫩尤物一区二区| 国产av一区二区三区传媒| 成人免费视频网站在线观看| 国产在线观看免费播放| 国产成人无遮挡在线视频| 天天综合网久久| 精品一区二区在线播放| 青娱乐精品在线| 成人一区二区三区| 亚洲激情 欧美| xnxx国产精品| a天堂中文字幕| 欧美国产欧美综合| 国产精品久久久免费看| 日韩一区欧美一区| 少妇影院在线观看| 亚洲成人动漫在线观看| 精品91久久久| 在线看不卡av| 99久久一区二区| 日韩欧美电影一二三| 性欧美videosex高清少妇| 丝袜av一区| 性欧美大战久久久久久久免费观看| 国产精品成人av| 波多野结衣与黑人| 亚洲一区二区三区四区五区午夜| 久久婷婷国产91天堂综合精品| 免费观看在线综合色| 992kp免费看片| 国产精品自拍三区| av网站有哪些| 中文字幕一区二区三区四区不卡 | 亚洲综合在线免费观看| 成年人免费看毛片| 欧美色网站导航| 人人妻人人澡人人爽精品日本 | 成人国产精品av| 精品三级在线观看视频| 日韩国产在线一区| 欧美伊人久久| www.日日操| 国产乱码精品一区二区三区五月婷| 伊人色在线视频| 久久午夜色播影院免费高清| 久久精品视频免费在线观看| 欧美特级www| 国产精品热久久| 精品偷拍一区二区三区在线看| 免费av在线网站| 51久久精品夜色国产麻豆| 欧美爱爱视频| 国产一区二区精品免费| 色无极亚洲影院| 午夜精品久久久久久久无码| 国产综合色视频| 中文字幕国产专区| 亚洲一区视频在线| 亚洲成熟少妇视频在线观看| 欧美精品电影在线播放| 日韩毛片在线一区二区毛片| 欧美国产在线视频| 亚洲午夜国产成人| 亚洲精品乱码视频| 国产精品人人爽人人做我的可爱| 又黄又爽又色的视频| 中文av一区特黄| 国产精品视频久久久久久久| 日韩欧美激情四射| 免费网站成人| 国产精品久久久久免费a∨大胸 | 国产网红在线观看| 国产在线精品播放| 欧美日韩一二| 欧美xxxxx在线视频| 99久久伊人精品| 久久久久无码国产精品不卡| 91精品欧美福利在线观看| 色影视在线观看| 国产精品美女久久| 久久91麻豆精品一区| 国产69精品久久久久999小说| 国产美女av一区二区三区| 欧美成人久久久免费播放| 欧美综合在线视频| 韩国免费在线视频| 国产成人精品日本亚洲专区61| 免费看久久久| 777av视频| 成人福利视频在线| 亚洲国产精品午夜在线观看| 精品国产免费久久 | 久久综合久色欧美综合狠狠| 男人天堂中文字幕| 亚洲国产女人aaa毛片在线| 92久久精品| 国内成+人亚洲| 国产欧美一区二区三区国产幕精品| 丰满少妇xbxb毛片日本| 亚洲成人av资源| 色欲av永久无码精品无码蜜桃| 亚州欧美日韩中文视频| 五月国产精品| 国产97在线 | 亚洲| 久久久国产一区二区三区四区小说 | 国产网红女主播精品视频| 国产精品久久久久久久久久久久午夜片 | 欧美专区在线| 国产精品久久久久无码av色戒| 欧美日韩国产综合新一区 | 美女网站一区二区| 国精品人伦一区二区三区蜜桃| 在线不卡中文字幕| 五月天激情在线| 精品视频高清无人区区二区三区| 国产精品入口66mio| 天天躁日日躁aaaa视频| 欧美日韩精品一区视频| av片在线观看网站| 精品麻豆av| 日韩精品一二三| 免费三片在线播放| 国产亚洲精品美女久久久久 | 九九九热999| 黄页网站大全一区二区| 国产精品久久久久久久妇| 中文字幕欧美国内| 欧美调教在线| 日本特黄在线观看| 91高清视频免费看| 欧美xxxbbb| 天天干天天操天天干天天操| 91麻豆免费看片| 草草视频在线播放|