国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

面試官:說說你對 TypeScript 中類的理解?應用場景?

開發 前端
傳統的面向對象語言基本都是基于類的,JavaScript 基于原型的方式讓開發者多了很多理解成本。

[[421917]]

本文轉載自微信公眾號「JS每日一題」,作者灰灰。轉載本文請聯系JS每日一題公眾號。

 

一、是什么

類(Class)是面向對象程序設計(OOP,Object-Oriented Programming)實現信息封裝的基礎

類是一種用戶定義的引用數據類型,也稱類類型

傳統的面向對象語言基本都是基于類的,JavaScript 基于原型的方式讓開發者多了很多理解成本

在 ES6 之后,JavaScript 擁有了 class 關鍵字,雖然本質依然是構造函數,但是使用起來已經方便了許多

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

TypeScript 的 class 支持面向對象的所有特性,比如 類、接口等

二、使用方式

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

  • 「字段」 :字段是類里面聲明的變量。字段表示對象的有關數據。
  • 「構造函數」:類實例化時調用,可以為類的對象分配內存。
  • 「方法」:方法為對象要執行的操作

如下例子:

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

繼承

類的繼承使用過extends的關鍵字

  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關鍵字是對父類的直接引用,該關鍵字可以引用父類的屬性和方法,如下:

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

修飾符

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

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

私有修飾符

只能夠在該類的內部進行訪問,實例對象并不能夠訪問

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

受保護修飾符

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

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

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

只讀修飾符

通過readonly關鍵字進行聲明,只讀屬性必須在聲明時或構造函數里被初始化,如下:

除了實例屬性之外,同樣存在靜態屬性

靜態屬性

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

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

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

抽象類

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

abstract關鍵字是用于定義抽象類和在抽象類內部定義抽象方法,如下所示:

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

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

  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... 

三、應用場景

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

export default class Carousel extends React.Component

由于組件需要傳入 props 的類型 Props ,同時有需要設置默認 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 

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

  1. public static defaultProps = new Props() 

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

參考文獻

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

 

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

 

責任編輯:武曉燕 來源: JS每日一題
相關推薦

2021-09-08 07:49:34

TypeScript 泛型場景

2021-09-16 07:52:18

算法應用場景

2021-09-10 06:50:03

TypeScript裝飾器應用

2021-11-03 14:10:28

工廠模式場景

2021-11-10 07:47:49

組合模式場景

2021-08-16 08:33:26

git

2021-11-09 08:51:13

模式命令面試

2021-11-05 07:47:56

代理模式對象

2021-09-28 07:12:09

測試路徑

2021-11-11 16:37:05

模板模式方法

2021-11-22 23:50:59

責任鏈模式場景

2021-09-29 07:24:20

場景數據

2021-10-08 09:59:32

冒泡排序場景

2021-10-13 18:01:33

快速排序場景

2021-10-09 10:25:41

排序應用場景

2021-11-04 06:58:32

策略模式面試

2021-05-31 10:35:34

TCPWebSocket協議

2021-06-01 08:25:06

Node.jsJavaScript運行

2021-10-11 09:38:41

開源

2021-10-12 07:15:02

歸并排序場景
點贊
收藏

51CTO技術棧公眾號

亚洲视频观看| 激情欧美一区| 99精品久久| 中文一区二区视频| 91原色影院| 999久久久国产999久久久| 欧美超级乱淫片喷水| 色网站在线看| 欧美日韩国产高清一区二区 | 日韩精品一区二区三区电影| 亚洲三级网址| 国产精品久久久久久久久久ktv| 国产三级视频在线| 一区二区三区美女视频| 最新av网站在线观看| 亚洲女人初尝黑人巨大| 国产精一区二区| 国产精品入口福利| 激情都市亚洲| 欧美精品www在线观看| 日本成人中文| 久久99国产精品免费| 欧美日韩国产成人在线| 在线影院av| 最新欧美精品一区二区三区| 男插女免费视频| 国内精品视频一区二区三区八戒| 欧美大香线蕉线伊人久久国产精品 | 久久久国产亚洲精品| 日韩欧美一区三区| 色哟哟国产精品免费观看| 久久日韩视频| 91日韩在线专区| 色老板亚洲精品一区| 日韩电影一区| 日本精品视频在线播放| 日韩中文视频| 欧美国产亚洲精品久久久8v| 国产麻豆精品久久一二三| 91av影院| 色综合天天性综合| 天堂在线中文网官网| 日本免费高清一区| 国产福利亚洲| 久热精品在线播放| 亚洲美女黄色片| 国产综合精品| 羞羞视频立即看| 国产伦精一区二区三区| 一本久道综合色婷婷五月| 五月婷婷激情综合| 三级福利片在线观看| 国产精品嫩草久久久久| mm131国产精品| 91九色最新地址| av免费网站在线| 久久香蕉国产线看观看av| 第一会所sis001亚洲| 激情综合在线观看| 国产一区二区欧美日韩| 亚洲综合专区| 黄色成人免费看| 精品国产一区久久| 欧美午夜精品久久久久免费视| 裸体一区二区三区| 亚洲自拍在线观看| 亚洲天堂av在线| 91精品电影| 国产精品aaaa| 麻豆91在线| 久久精品国产99国产| 久久视频免费观看| 国语对白在线视频| 欧美激情电影| 亚洲精品电影网在线观看| 色七七在线观看| 精品伊人久久久| 欧美mv日韩mv亚洲| 欧日韩免费视频| 男人的天堂亚洲| 国产综合18久久久久久| 成人在线电影在线观看视频| 欧美在线免费视屏| 欧美一区二区影视| 亚洲五月综合| 亚洲国产成人精品电影| 天堂av中文在线观看| 丝袜美腿亚洲一区二区| 国产青青视频| 欧美在线免费观看亚洲| 波多野结衣亚洲| 7777精品久久久久久| 激情综合久久| 国产aaa免费视频| 欧美日韩另类视频| 成人免费黄色| 91九色露脸| 91蜜桃视频在线| 青青草在线视频免费观看| 国产午夜精品视频免费不卡69堂| 女人丝袜激情亚洲| 熟女熟妇伦久久影院毛片一区二区| 亚洲日本成人在线观看| 多野结衣av一区| 91精品国产综合久久香蕉的用户体验| 久久国产精品无码网站| 最新天堂资源在线资源| 日韩在线中文字幕| 在线成人亚洲| 亚洲四虎av| 一区二区在线免费视频| 欧美激情视频一区二区三区在线播放| 无码精品a∨在线观看中文| 欧美中文字幕亚洲一区二区va在线 | 久久99国产精品一区| 欧美性猛交xxxx免费看| 手机在线免费观看av| 国产精品日韩专区| 色婷婷综合久久久中文一区二区| 欧美一区国产| 日韩中文字幕在线| av片在线观看网站| 狠狠操狠狠色综合网| 国产精品诱惑| 国新精品乱码一区二区三区18| 亚洲国产精品黑人久久久| 岛国在线视频网站| 久久av一区二区三区亚洲| 亚洲精品水蜜桃| 高清国产一区二区三区四区五区| 美女被啪啪一区二区| 午夜国产不卡在线观看视频| 一区二区三区免费在线看| 成人性做爰片免费视频| 欧美一区二区三区免费在线看| 欧美独立站高清久久| 1234区在线观看视频免费| 久久精品成人一区二区三区 | 欧美性高潮床叫视频| 欧美精品影院| 好吊色视频988gao在线观看| 欧美日产国产精品| 欧美1区2区3区| 久草在线在线| 国产不卡视频在线| 久久综合色8888| 小说区图片区亚洲| 三年中文高清在线观看第6集| 成人www视频网站免费观看| 粉嫩欧美一区二区三区| 在线观看日韩www视频免费| 久久精品免费观看| 超碰免费在线播放| 麻豆精品传媒视频| 欧美性猛交一区二区三区精品 | 日本欧美色综合网站免费| 色综合天天视频在线观看 | 日韩极品在线| 最新中文字幕免费视频| 久久久精品日本| wwww国产精品欧美| 成人97精品毛片免费看| 精品中文字幕av| 日韩视频免费在线观看| 99视频精品免费视频| 9.1麻豆精品| 国产精品入口免费软件| 国内精品久久久| 一区二区在线看| 一本一道久久a久久精品蜜桃| 久草在线网址| 欧美一区二区三区电影在线观看| 日韩免费一区二区| 国产成人福利片| 欧美h版在线观看| 久草福利资源站| 91精品国产综合久久香蕉最新版 | 国产精品99导航| 亚洲午夜在线视频| 国产精品a级| 日本在线播放| 一区二区三区四区在线视频| 亚洲免费视频在线观看| 久久先锋影音av鲁色资源网| 欧洲精品一区| 精品欧美不卡一区二区在线观看| 久久伊人一区二区| 有码中文亚洲精品| 亚洲青青青在线视频| 欧美精品97| 久久青草伊人| 九色porny自拍| 99re资源| 亚洲品质视频自拍网| 一区免费观看视频| 亚洲激情亚洲| 中文.日本.精品| 日本欧美亚洲| 日本精品一区二区| 高清欧美性猛交|