精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

一区二区视频免费看| 久久久噜噜噜www成人网| 国产免费一区二区三区免费视频| 91不卡在线观看| 精品av综合导航| 一区二区三区韩国| 免费污视频在线观看| 久久久久久麻豆| 成人91免费视频| 无码日韩精品一区二区| 欧美成人有码| 中文字幕精品—区二区| 人妻 丝袜美腿 中文字幕| 免费观看欧美大片| 一级日本不卡的影视| 日韩精品在在线一区二区中文| 国产av一区二区三区精品| 国产精品普通话对白| 性色av蜜臀av色欲av| 大乳在线免费观看| 国产成人精品一区二| 国产精品mp4| 久草视频在线资源站| 国产在线观看91一区二区三区| 91麻豆精品国产91久久久久| 国产xxxxx在线观看| 亚洲91av| 国产精品国产三级国产aⅴ原创 | 精品视频一二| 色婷婷av一区二区三区gif| www.日本在线视频| 黄色网在线播放| 国产欧美日韩精品a在线观看| 国产精品久久久一区二区三区| 国产精品久久久久久久久久久久久久久久 | 一本久久青青| 亚洲国产天堂网精品网站| 日本免费色视频| 忘忧草在线www成人影院| 午夜精品久久久久久久| 国产亚洲精品久久久久久久| 日本成a人片在线观看| 国产日韩精品一区二区三区| 久久久久资源| 日本一本草久在线中文| 不卡的av电影在线观看| 国产免费一区二区三区| 亚洲老妇色熟女老太| 国产在线一区观看| 成人激情综合网| 国产精品毛片一区二区在线看舒淇 | 国产精品羞羞答答在线观看| 日韩国产精品一区| 精品夜夜澡人妻无码av | 狠狠色狠狠色综合日日91app| 国产精品av在线播放| 波多野结衣影片| 奇米精品一区二区三区四区| 国产精品入口夜色视频大尺度| 亚洲精品毛片一区二区三区| 麻豆精品国产传媒mv男同| 国产精品视频内| 中文字幕+乱码+中文| 免费人成精品欧美精品| 成人黄色生活片| 99精品国产99久久久久久97| 国产成人综合网站| 国产一区二区三区色淫影院| 亚洲av成人无码久久精品老人| 91理论电影在线观看| 欧美日韩一区二区视频在线观看| 爱爱爱免费视频在线观看| 国产精品妹子av| www.亚洲成人网| 日韩欧美精品一区二区三区| 91精品办公室少妇高潮对白| 久久久久国产一区| 成人国产精品久久| 精品欧美黑人一区二区三区| 国产又黄又粗又猛又爽的视频| 亚洲大片精品免费| 久久激情五月丁香伊人| 精品午夜福利在线观看| 免费久久99精品国产自在现线| 国产精品人成电影在线观看| 亚洲黄色小说网| 久久久久久久久久久久久久久99| 在线一区日本视频| 搞黄网站在线看| 91久久精品一区二区三| 污视频在线观看免费网站| 久久精品色播| xvideos亚洲| 可以在线观看av的网站| 久久国产精品72免费观看| 97夜夜澡人人双人人人喊| 日韩精品一二| 一区二区三区四区不卡在线| 999香蕉视频| 成人免费91| 亚洲人成在线播放| 久久久久久国产精品视频 | 精品久久久久久久久久ntr影视| mm1313亚洲国产精品无码试看| 久久av偷拍| 亚洲天堂网在线观看| 免费在线观看亚洲| 蜜桃av一区二区在线观看 | 欧美电影免费观看高清| 97在线视频免费看| 一道本在线视频| 久久亚洲捆绑美女| 国产一级做a爰片久久毛片男| 韩国精品主播一区二区在线观看 | 黄色在线视频网站| 色天天综合色天天久久| 任你躁av一区二区三区| 99久久久久久中文字幕一区| 日本精品一区二区三区在线播放视频 | 成人影院网站| 亚洲成人av片在线观看| 日本高清一二三区| 日韩av电影天堂| 蜜桃麻豆91| xxx在线免费观看| 91精品国产aⅴ一区二区| 娇妻被老王脔到高潮失禁视频| 制服诱惑一区二区| 国产成人亚洲欧美| 麻豆视频在线| 欧美精品自拍偷拍| 日本人亚洲人jjzzjjz| 亚洲欧美视频一区二区三区| 好吊色欧美一区二区三区四区 | 欧洲一区二区视频| 天天干天天爱天天操| 一区二区三区久久| 潘金莲一级淫片aaaaa| 欧美h版在线| 国产精品一二三在线| 国产在线视频你懂得| 日韩欧美亚洲一二三区| 亚洲狠狠婷婷综合久久久久图片| 亚洲三级国产| 久久99精品久久久久久青青日本| 丁香花在线观看完整版电影| 欧美www视频| 免费在线观看国产精品| 成人高清免费观看| 黄色免费福利视频| 妖精视频一区二区三区免费观看| 91av中文字幕| 免费在线性爱视频| 91国内精品野花午夜精品| 一区二区三区伦理片| 日本aⅴ精品一区二区三区 | 秋霞a级毛片在线看| 7777精品久久久大香线蕉| 国产精品国产三级国产传播| 国产精品综合二区| 日韩欧美精品免费| 日韩黄色网络| 国产精品视频成人| av激情在线| 精品电影一区二区| 日韩在线视频不卡| 国产精品另类一区| 乳色吐息在线观看| 亚洲影视综合| 色综合久久久久久久久五月| 亚洲欧美专区| 国内久久久精品| 国产1区2区3区在线| 制服丝袜日韩国产| 国产一级做a爱免费视频| 91年精品国产| 男人的天堂最新网址| 欧美日韩1区| 欧美一级二级三级| 天堂综合在线播放| 午夜精品久久久99热福利| 二区三区在线| 精品国产精品一区二区夜夜嗨| 亚洲乱码国产乱码精品| 亚洲日本在线观看| 人妻丰满熟妇av无码久久洗澡| 麻豆一区二区在线| 草b视频在线观看| 色偷偷综合网| 久久本道综合色狠狠五月| 欧美久久久网站| 国内精品视频久久| 麻豆最新免费在线视频| 亚洲精品成人网| 97成人在线观看| 无吗不卡中文字幕| 国产av 一区二区三区| 91蝌蚪porny成人天涯| 污视频在线观看免费网站| 欧美亚洲视频| 男人天堂新网址| 欧美电影《睫毛膏》| 欧美日韩一区二区三区在线视频 | 中文字幕无线精品亚洲乱码一区 | 一区二区日韩电影| 欧美性猛交xxxx乱| 成人国产一区二区三区精品| 一级做a免费视频| 免费视频一区二区三区在线观看| 992tv快乐视频| 日韩精品中文字幕第1页| 久久大片网站| 国产精品久久久网站| 91精品在线看| 成人在线视频观看| 国产成人久久久| 国产777精品精品热热热一区二区| 色妞色视频一区二区三区四区| 午夜激情在线视频| 欧美videos大乳护士334| 国产孕妇孕交大片孕| 欧美在线一区二区| 无码日韩精品一区二区| 激情久久av一区av二区av三区| 国产少妇在线观看| 国产精品美女视频| 日本视频在线免费| 国产精品视频线看| 免费看的黄色录像| 中文字幕免费在线观看视频一区| 波多野结衣办公室33分钟| 成人动漫视频在线| 特级特黄刘亦菲aaa级| 国产成人精品影院| 中文字幕在线播放一区二区| 韩日av一区二区| 国产永久免费网站| 久久精品国产99国产精品| 国产又粗又长又大的视频| 人人爽香蕉精品| 欧美日韩亚洲自拍| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩精品一区二区三区色欲av| 国产精品日本| 六月丁香婷婷在线| 玖玖在线精品| 999精彩视频| 韩日av一区二区| 绯色av蜜臀vs少妇| 成人免费毛片嘿嘿连载视频| 国产高潮视频在线观看| 成人av在线看| 久久人人爽人人爽人人片| 久久久久国产一区二区三区四区 | 国产精品91一区| 日韩久久一区二区三区| 国产精品美女无圣光视频| 伊人久久综合网另类网站| 亚洲一区二区三| 国内精品免费| 欧美三级网色| 日韩片欧美片| 蜜桃视频一区二区在线观看| 亚洲美女黄网| 久久九九国产视频| 国产在线视频一区二区| 久久无码专区国产精品s| 99re66热这里只有精品3直播 | 国产女同无遮挡互慰高潮91| 丰满白嫩尤物一区二区| 国产精品探花一区二区在线观看| 久久嫩草精品久久久久| 久久久久亚洲AV成人无在| 亚洲乱码国产乱码精品精可以看 | 婷婷久久伊人| 欧美国产免费| www.国产区| 国产一区视频网站| 18禁裸乳无遮挡啪啪无码免费| 欧美高清在线精品一区| 欧美黄色一级网站| 色猫猫国产区一区二在线视频| 91丨porny丨在线中文 | 欧美精品99久久久| 日韩欧美国产成人| 国产精品一级视频| 日韩乱码在线视频| 国产在线高清视频| 欧美中文字幕视频| 精品精品视频| 欧美综合77777色婷婷| 欧美精品入口| 18岁视频在线观看| 国产69精品一区二区亚洲孕妇| caopeng视频| 亚洲一区视频在线| 一道本在线视频| 亚洲色在线视频| 菠萝蜜视频在线观看www入口| 国产精品国产三级国产aⅴ浪潮| 日韩区一区二| 一区二区成人国产精品| 99伊人成综合| 波多野结衣三级视频| 国产精品福利av| 精品国产午夜福利| 日韩精品一区二区三区视频 | 日本在线一二三区| www国产精品av| 久久无码精品丰满人妻| 欧美日本在线视频| 黄色在线播放| 2019中文在线观看| 国产一区二区三区不卡av| 日本成人性视频| 日本美女一区二区| 久久久久久国产精品无码| 午夜精品福利一区二区蜜股av| 国产免费无遮挡| 日韩中文字幕在线看| 日韩在线短视频| 欧美一区二区三区在线播放| 亚洲日本黄色| 国产chinese中国hdxxxx| 一区二区三区中文在线| 国产婷婷在线视频| 日韩一二三在线视频播| 成人日韩av| 亚洲国产精品久久久久婷婷老年 | 国产精品日韩在线观看| 国产一区二区三区四区大秀| 777久久久精品一区二区三区| 成人丝袜高跟foot| 日本免费在线播放| 精品国产乱码久久久久久久| 黄页网站大全在线免费观看| 99热在线国产| 亚洲高清不卡| 亚洲av成人片色在线观看高潮| 亚洲成在线观看| 亚洲欧美日韩免费| 2019日本中文字幕| 国产成人精品999在线观看| 国产精品亚洲αv天堂无码| 91年精品国产| 91麻豆精品在线| 中日韩午夜理伦电影免费| 日韩精品一级毛片在线播放| 伊人av成人| 国产精品一二三四区| 免费在线观看av网址| 亚洲精品久久久一区二区三区| 中文字幕在线直播| 无码免费一区二区三区免费播放| 日本欧美韩国一区三区| 亚洲色图27p| 欧美一区二区日韩| av电影免费在线看| 久久偷看各类wc女厕嘘嘘偷窃| 久久精品五月| 五月婷婷综合激情网| 在线电影一区二区三区| 国产蜜臀av在线播放| 精品国产一区二区三区四区精华 | 香蕉国产精品| 污污免费在线观看| 日韩欧美综合在线视频| 91社区在线观看播放| 91久久大香伊蕉在人线| 亚洲美女色禁图| 我不卡一区二区| 日韩一区二区在线观看视频播放| 麻豆蜜桃在线| 日韩影视精品| 国产精品自拍av| 国产精品男女视频| 日韩亚洲综合在线| 免费成人蒂法| 老司机午夜性大片| 亚洲成av人片在www色猫咪| 国产在线视频网站| 99国内精品久久久久久久软件| 亚洲尤物影院| 91嫩草丨国产丨精品| 亚洲精品视频在线播放| 成人污版视频| 波多野结衣家庭教师视频| 亚洲美女视频在线| 免费福利在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 在线亚洲免费| 中文字幕在线观看成人 | 成人在线免费看片| 欧美h视频在线| 国产精品一色哟哟哟| 久久精品视频2| 国语对白做受69| 亚州av乱码久久精品蜜桃| 国精品无码人妻一区二区三区| 3d成人动漫网站|