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

【前端】你好,我叫TypeScript 02──變量和接口

開發 前端
interface接口的定義其實很簡單,和定義對象一樣的形式。接口對象的基本屬性包括:默認屬性、可選屬性以及只讀屬性,其可索引類型的定義只有string和number兩種形式,類接口進行繼承的形式和類的繼承大同小異。

[[400318]]

TS變量與接口

變量聲明

其實TS中的變量聲明和JS中是一樣的,所以你會JS就會TS,無外乎var、let和const,記住以下的表格內容就能解決絕大多數場景問題。

接口在面向對象語言中,接口是個比較核心的概念,其作用就是對類型命名和代碼定義契約,其實就是對行為的抽象,對對象的形狀進行描述。在TS中就是對值所具有的結構進行類型檢查。

  1. // 原始方法 
  2. function printLabel(labelObj: {label:string}){ 
  3.   console.log(labelObj.label); 
  4. let myObj = {name:"wenbo",label:"size 110"}; 
  5. printLabel(myObj); 
  6.  
  7. // 接口方法 
  8. interface LabelValue { 
  9.   label: string; 
  10.  
  11. function printLabel2(labelValue:LabelValue){ 
  12.   console.log(labelValue.label); 
  13.    
  14. printLabel2(myObj); 

上述代碼表明,printLabel中傳入對象labelObj有string類型的label屬性。而傳入的對象參數實際會包含很多屬性,但是編譯器智慧檢查那些必須的屬性是否存在、類型是否匹配。printLabel2接口其實就是對printLabel中傳入對象類型的抽象,定義它的參數行為,類型檢查器不會關注屬性的順序。

接口對象的聲明方式

接口對象的聲明方式很簡單,就是在接口名前加上interface即可。

  1. interface myObj { 
  2.   name:string; 
  3.   label:string; 

接口對象的基本屬性

接口對象的屬性無外乎默認屬性、可選屬性和只讀屬性等。

  • 默認屬性:表示該屬性必須存在,可讀可改
  • 可選屬性:表示該屬性可有可無、可讀可改,只需要在屬性名后加上?符號即可,如:name?:string;。可以對可能存在的屬性進行預定義,捕獲引用了不存在屬性時的錯誤。
  • 只讀屬性:表示該屬性只能讀取、不可修改,只需要在對象創建時對指定屬性名前加上readonly即可,可以確保創建后不被修改。
  1. interface LabelValue{ 
  2.   readonly id: number;//只讀屬性,表示該屬性只能讀取、不可修改 
  3.   name?: string;//可選屬性,表示該屬性可有可無 
  4.   label: string;//默認屬性,表示該屬性必須存在 
  5. function printLabel(labelValue:LabelValue){ 
  6.   console.log(labelValue); 
  7.  
  8. let myObj: LabelValue = {name:"yichuan",id:100,label:"size 110"}; 
  9. printLabel(myObj);//{ name'yichuan', id: 100, label: 'size 110' } 
  10.  
  11. myObj.id = 200;// 報錯: Cannot assign to 'id' because it is a constant or a read-only property. 
  12.  
  13. let myObj2: LabelValue ={id:100}; 
  14. // Type '{ id: number}' is not assignable to type 'LabelValue'
  15. // Property 'label' is missing in type '{ id: number}'
  16. // 報錯: 缺少 label 屬性 

接口對象的函數類型

接口能夠描述JavaScript中對象擁有的各種各樣的外形。 除了描述帶有屬性的普通對象外,接口也可以描述函數類型。

使用接口表示函數類型,需要給接口定義一個調用簽名,是一個只有參數列表和返回值類型的函數,其中參數列表的每個參數都得有屬性名和類型。

  1. interface myFun{ 
  2.   (name:string, age:number): void;//()中的是函數類型,void是否有返回值 
  3.  
  4. let iFun: myFun; 
  5.  
  6. iFun = function (name:string,age:number){ 
  7.   console.log(`my name is ${name}, my age is ${age}`) 
  8.  
  9. iFun("yichuan",18);//my name is yichuan, my age is 18 

我們可以看到:首先創建了一個函數類型的接口myFun,再創建了一個函數類型的變量iFun,并將同類型的函數賦值給這個變量。

對于函數類型檢查而言,函數的參數名不需要與接口定義的名字匹配。類型檢查器會對函數參數進行逐個檢查,判斷對應位置的參數類型是否匹配。當然,如果你在函數中沒有指定參數類型,那么TS類型系統會根據接口進行推斷,并執行檢查是否匹配。

  1. interface myFun{ 
  2.   (name:string, age:number): void; 
  3.  
  4. let iFun: myFun; 
  5.  
  6. iFun = function (name,age){ 
  7.   console.log(`my name is ${name}, my age is ${age}`) 
  8.  
  9. iFun("yichuan",18);////my name is yichuan, my age is 18 

接口對象的可索引類型

與使用接口描述函數類型差不多,只不過可索引類型時通過描述對象索引類型和索引返回值類型的「索引簽名」。

  1. //定義一個學生列表接口 
  2. interface StudentList{ 
  3.   id: number; 
  4.   name: string; 
  5.  
  6. // 定義一個班級接口 
  7. interface ClassList{ 
  8.   classname: string; 
  9.   students: StudentList[]; 
  10.   [index: string]: any;//可以用任意的string類型去索引聲明的對象, 值是any類型 
  11.  
  12. function printLabel(data:ClassList){ 
  13.   return data; 
  14.  
  15. printLabel({ 
  16.   classname:"class 1"
  17.   numbers:30, 
  18.   students:[{ 
  19.     id:2001, 
  20.     name:"yichuan" 
  21.   }] 
  22. }) 

可索引接口的類型只可以使用string和number進行定義索引簽名。可以同時使用兩種類型的索引,但是數字索引的返回值必須是字符串索引返回值類型的子類型。當使用 number來索引時,JavaScript會將它轉換成string然后再去索引對象。

  • 字符串定義索引簽名
  • 數字定義索引簽名
  • 混合類型定義索引簽名
  1. class Animal { 
  2.     name: string; 
  3. class Dog extends Animal { 
  4.     breed: string; 
  5.  
  6. // 錯誤:使用數值型的字符串索引,有時會得到完全不同的Animal! 
  7. interface NotOkay { 
  8.     [x: number]: Animal; 
  9.     [x: string]: Dog; 

字符串索引簽名能夠很好的描述dictionary模式,并且它們也會確保所有屬性與其返回值類型相匹配。因為字符串索引聲明了obj.property和obj["property"]兩種形式都可以。

為防止給索引賦值,可以將其索引簽名定義為只讀類型。

  1. interface ReadonlyStringArray { 
  2.     readonly [index: number]: string; 
  3. let myArray: ReadonlyStringArray = ["Alice""Bob"]; 
  4. myArray[2] = "Mallory"; // error! 

類接口

TS中可以對類設置強制執行的類型約定,即類接口。

  1. interface FatherInterface{ 
  2.   firstName: string; 
  3.  
  4. class Son implements FatherInterface{ 
  5.   firstName!: String; 
  6.   constructor(lastName:string,age:number){}; 

注意:

  • 接口只描述類的公共部分,而不是公共和私有兩部分。它不會幫你檢查類是否具有某些私有成員。
  • 類實現接口時,必須實現接口所有的屬性
  • 接口無法約束類的構造函數,類型檢查器只會對實例部分進行檢查

我們知道類具有兩種類型:靜態部分的類型和實例的類型。當你用構造器簽名去定義一個接口并試圖定義一個類去實現這個接口時會得到一個錯誤:只對其實例部分進行類型檢查,而constructor存在于類的靜態部分,所以不在檢查的范圍內。

  1. interface FatherInterface{ 
  2.   new (firstName:string); 
  3.  
  4. class Son implements FatherInterface{ 
  5.   constructor(firstName:string,lastName:string,age:number){}; 

繼承接口

和類一樣,接口也可以相互繼承。可以將一個接口成員復制到另一個接口,靈活地分割接口到可復用模塊中。

  1. interface DogInterface{ 
  2.   type:string; 
  3.  
  4. interface Erha extends DogInterface{ 
  5.   name:string; 
  6.   age:number; 
  7.  
  8. let erha = <Erha>{}; 
  9. erha.type = "dog"
  10. erha.name = "bobo"
  11. erha.age = 2; 

同樣的,接口也可以實現多繼承。

  1. class Son implements FatherInterface{ 
  2.   constructor(firstName:string,lastName:string,age:number){}; 
  3.  
  4. interface AnimalInterface{ 
  5.   foal:string; 
  6.  
  7. interface DogInterface{ 
  8.   type:string; 
  9.  
  10. interface Erha extends DogInterface, AnimalInterface{ 
  11.   name:string; 
  12.   age:number; 
  13.  
  14. let erha = <Erha>{}; 
  15. erha.type = "dog"
  16. erha.name = "bobo"
  17. erha.age = 2; 
  18. erha.foal = "分娩"

小結

interface接口的定義其實很簡單,和定義對象一樣的形式。接口對象的基本屬性包括:默認屬性、可選屬性以及只讀屬性,其可索引類型的定義只有string和number兩種形式,類接口進行繼承的形式和類的繼承大同小異。

參考文章

  • 阿寶哥的《重學TS》
  • 《ts中文文檔》
  • 《大話 Typescript 接口》

本文轉載自微信公眾號「前端萬有引力」,可以通過以下二維碼關注。轉載本文請聯系前端萬有引力公眾號。

 

責任編輯:姜華 來源: 前端萬有引力
相關推薦

2021-06-17 09:32:17

前端TypeScript 技術熱點

2021-05-20 07:31:25

TypeScript前端數據類型

2021-05-25 07:39:18

TypeScript 前端函數與類

2021-05-18 07:37:18

前端TypeScript數據類型

2021-10-14 14:00:44

996加班工作

2021-02-20 13:55:35

程序員計算機技術

2022-03-07 05:53:41

線程CPU代碼

2022-10-18 07:17:31

2025-10-28 01:22:00

HTTP狀態碼系統

2019-11-26 08:56:32

聯通攜號通信

2017-09-12 14:22:31

汽車

2013-01-17 09:25:51

iOS沖榜策略

2021-05-04 22:31:15

零信任網絡安全網絡攻擊

2020-02-17 15:17:57

釘釘

2024-05-11 10:19:31

TypeScript類型接口

2022-05-17 08:25:10

TypeScript接口前端

2024-05-10 12:29:30

接口類型

2022-02-11 19:06:29

MySQL索引面試官

2020-02-22 21:45:00

TypeScriptJavaScript瀏覽器

2019-08-02 17:48:16

戴爾
點贊
收藏

51CTO技術棧公眾號

久久欧美在线电影| 亚洲天堂av影院| 欧美粗大gay| 国产高清成人在线| 最近中文字幕日韩精品| 欧美性久久久久| 久久免费视频播放| 91精品麻豆| 日本一区二区视频在线观看| 韩日欧美一区二区| 深夜福利网站在线观看| 日韩毛片久久久| 亚洲欧美日本伦理| 午夜久久电影网| 国产无套精品一区二区| 久久黄色小视频| 欧美一级片网址| 国产日产欧美一区| 国产精品美女免费视频| 国产人妻大战黑人20p| 日韩欧美一中文字暮专区| 成人动漫一区二区| 97超碰蝌蚪网人人做人人爽| 国产午夜在线一区二区三区| 懂色av一区| 成人小视频在线观看| 久久久久久国产| 李丽珍裸体午夜理伦片| 乱馆动漫1~6集在线观看| 国产精品三级电影| 91在线看www| 精品国产国产综合精品| 国产精品国产亚洲精品| 亚洲精品久久久蜜桃| 91成人理论电影| 国产精品成人久久| 免费看久久久| 一本到高清视频免费精品| 日韩高清国产精品| 国产又粗又猛又爽又黄视频 | 91精品国产一区二区三区动漫 | 妺妺窝人体色www聚色窝仙踪| 成人情趣视频| 欧美日韩一二区| 可以在线看黄的网站| 高清一区二区三区四区| 国产欧美高清| 中文字幕成人在线| 性生活在线视频| 91精品亚洲一区在线观看| 欧美在线观看你懂的| 黄色a级在线观看| 免费观看的毛片| 视频一区视频二区在线观看| 久久精品小视频| 国产a级黄色片| 一区二区三区四区视频免费观看| 粉嫩老牛aⅴ一区二区三区| 亚洲国产激情一区二区三区| 精品国产av鲁一鲁一区| 噜噜噜91成人网| 久热精品视频在线观看| 亚洲制服丝袜在线播放| 欧美一级在线| 五月婷婷综合激情| heyzo亚洲| 欧美成人二区| 久久天天做天天爱综合色| 91美女片黄在线观| 国产毛片久久久久| 亚洲一区网站| 久久91精品国产91久久跳| 一级性生活毛片| 国产欧美日韩电影| 欧美mv和日韩mv的网站| 日日躁夜夜躁aaaabbbb| 青青青免费在线视频| 色狠狠一区二区| 日本中文字幕亚洲| 麻豆影视在线观看_| 一区二区三区在线高清| 免费看又黄又无码的网站| www久久日com| 国产精品久久久久7777按摩| 精品免费日产一区一区三区免费| 97久久人国产精品婷婷| 国产精品亚洲人在线观看| 国产精品日韩在线播放| 国产三区在线播放| 91香蕉视频在线| 岛国视频一区免费观看| 96日本xxxxxⅹxxx17| 久久婷婷久久| 91色在线视频| 欧洲视频在线免费观看| 北条麻妃国产九九精品视频| 成人欧美一区二区三区黑人| 国产亚洲久一区二区| 亚洲免费综合| 91精品国产综合久久久久久蜜臀 | 91制片厂在线| 国产成人调教视频在线观看| 亚洲国产中文字幕久久网| 中文字幕一二三| 色综合久久久| 日韩经典中文字幕在线观看| 成人免费毛片日本片视频| 成人在线免费小视频| 久久久久国产精品免费网站| 影音先锋黄色网址| 人妖欧美一区二区| 国产美女被下药99| 91 中文字幕| 久久免费偷拍视频| 中文字幕无码精品亚洲资源网久久| 成人h在线观看| 欧美日韩另类国产亚洲欧美一级| 北条麻妃视频在线| 视频在线日韩| 欧美日韩国产美| 中文字幕乱码在线| 欧美99在线视频观看| 色综合五月天导航| 久久精品99久久久久久| 日韩成人免费在线| 91精品久久久久久久久| 欧美日韩伦理片| 欧美经典一区二区三区| 国产97在线 | 亚洲| 99亚洲乱人伦aⅴ精品| 亚洲精品美女免费| 在线免费日韩av| 亚洲一级电影| 97碰在线观看| 亚洲欧美激情另类| 亚洲精选在线视频| 老太脱裤让老头玩ⅹxxxx| 亚洲高清国产拍精品26u| 在线一区二区日韩| 久久精品偷拍视频| 国产美女娇喘av呻吟久久| 亚洲视频小说| av中文字幕在线观看第一页 | 林ゆな中文字幕一区二区| 日韩成人黄色av| 国产一级av毛片| 丰满岳乱妇一区二区三区| 久久一区免费| 免费黄色在线| 欧美日韩国产高清一区二区三区 | 国产精品亚洲片夜色在线| 成人高清免费观看mv| 亚洲日韩欧美一区二区在线| 久久精品国产sm调教网站演员 | 欧美理论一区二区| 欧美性天天影视| 欧美高清www午色夜在线视频| 美女被爆操网站| 欧美猛男男男激情videos| 久久久999精品免费| 国产免费不卡视频| 亚洲免费观看高清完整版在线 | 91网站在线播放| 欧美激情国产精品日韩| 国产综合av| 中文字幕av日韩| 国产普通话bbwbbwbbw| 亚洲综合一区二区精品导航| 国产免费又粗又猛又爽| 久久精品国产大片免费观看| 久久免费视频在线| 日韩av视屏| 欧美视频一区二区在线观看| 麻豆天美蜜桃91| 日韩精品久久理论片| 图片区小说区区亚洲五月| a级片免费在线观看| 国产丝袜一区二区三区免费视频| 欧美黄色一级网站| 成人高清免费观看| 91蝌蚪视频在线观看| 亚洲二区三区不卡| 国产精品亚洲自拍| 色av手机在线| 91精品一区二区三区在线观看| 国产精品一二三区在线观看| 久久国产精品第一页| 欧美一二三区| 欧亚在线中文字幕免费| 日韩在线观看视频免费| 亚洲精品免费在线观看视频| 亚洲日本欧美天堂| 色婷婷免费视频| 久久99精品久久久久婷婷| 成人午夜视频在线观看免费| 欧美三级情趣内衣| 7777精品久久久久久| 2021av在线| 欧美日韩美女一区二区| 日韩欧美a级片| av在线播放成人| 天天综合网日韩| 9国产精品视频| 精品在线一区| 91精品一久久香蕉国产线看观看| 亚洲**2019国产| 四虎影院观看视频在线观看| 中文字幕精品一区二区精品| 亚洲av成人精品毛片| 精品国产乱码久久久久久虫虫漫画| 免费看黄色片的网站| 蜜臀久久久99精品久久久久久| 日韩三级电影| 精品淫伦v久久水蜜桃| 91麻豆桃色免费看| 韩日精品一区| 清纯唯美日韩制服另类| 国产小视频在线| 欧美色视频日本版| 91视频免费观看网站| 日韩高清中文字幕一区| 国产va亚洲va在线va| 欧美三级午夜理伦三级在线观看| 91美女片黄在线观看游戏| 伊人久久高清| 欧美影院久久久| jizzjizz在线观看| 亚洲欧美一区二区三区四区| 最近日韩免费视频| 欧美性生交xxxxx久久久| xxxx 国产| 亚洲一区二区三区视频在线| 丰满大乳奶做爰ⅹxx视频| 日韩国产在线观看| 日本三级免费网站| 中日韩男男gay无套| 国产精品久久中文字幕| 国产精品v日韩精品v欧美精品网站| 国产精品区一区二区三含羞草| 在线观看网站免费入口在线观看国内 | h色网站在线观看| 成人小视频在线| 国产欧美视频一区| 丝袜美腿成人在线| av动漫在线观看| 久久99伊人| 亚洲视频在线观看一区二区三区| 五月天久久网站| 精品人伦一区二区三区| 久久精品国产亚洲5555| 精品在线视频一区二区| 九九在线高清精品视频| 日本午夜精品一区二区| 日韩国产在线| 久久久久久国产精品免费免费| 成人亚洲视频| 777777777亚洲妇女| 在线天堂新版最新版在线8| 青青久久aⅴ北条麻妃| 欧洲精品一区二区三区| 国产精品一区二区性色av| 国产高清日韩| 91青青草免费在线看| 国产精品网在线观看| 国产欧美在线播放| 国产精品美女久久久久人| 91蜜桃网站免费观看| 日韩欧美天堂| 97久久人人超碰caoprom欧美| 97精品久久| 麻豆亚洲一区| 欧美激情电影| 国产精品自拍合集| 99久久综合狠狠综合久久aⅴ| 欧美一级黄色录像片| 精品国产一区二区三区小蝌蚪| 午夜精品短视频| 欧美精品国产| 日本黄色a视频| 欧美日韩综合| 日韩a在线播放| 国产揄拍国内精品对白| 蜜臀av免费观看| 国产成人鲁色资源国产91色综| 好吊一区二区三区视频| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产xxxx孕妇| 在线成人av网站| 天堂av手机版| 亚洲第一页自拍| 免费国产黄色片| 自拍亚洲一区欧美另类| av福利在线导航| 国产精品久久久久久久av电影| 久久久久久久| 97免费资源站| 不卡日本视频| 成人在线观看你懂的| 精久久久久久久久久久| 日本中文字幕精品—区二区| 视频在线观看一区| 人妻激情偷乱频一区二区三区| 欧美国产禁国产网站cc| 大吊一区二区三区| 国产精品电影院| 免费av网站在线| 日韩欧美亚洲综合| 亚洲欧美另类日韩| 精品久久久av| 成人视屏在线观看| 久久人人爽爽人人爽人人片av| 欧美激情五月| 一区二区三区国产免费| 91在线视频免费91| 最新中文字幕视频| 亚洲一二三区不卡| 国产一区二区在线播放视频| 亚洲香蕉av在线一区二区三区| 国产中文在线观看| 97视频免费看| 97久久综合区小说区图片区| 正义之心1992免费观看全集完整版| 国产精品99久久| 免费观看成人网| 久久综合九色综合97_久久久| 99热久久这里只有精品| 欧美黄色网页| 精品视频第一区| 在线日韩中文| 欧美日韩中文在线视频| 懂色av一区二区三区蜜臀| 曰本女人与公拘交酡| 在线电影一区二区三区| 免费a级毛片在线播放| 国产日韩精品一区二区| 欧美日韩伦理| 91激情视频在线| 欧美国产综合一区二区| 蜜臀99久久精品久久久久小说| 亚洲天堂一区二区三区| 日韩pacopacomama| 日本精品国语自产拍在线观看| 六月婷婷一区| 美国黄色特级片| 亚洲一区二区三区四区在线观看 | 亚洲二区在线播放视频| 久久五月精品中文字幕| 清纯唯美日韩制服另类| 日韩大胆成人| 欧美xxxxx在线视频| 国产性色一区二区| 伊人网综合在线| 精品盗摄一区二区三区| av影片在线看| 国产免费亚洲高清| 91精品成人| 极品白嫩的小少妇| 欧美日韩免费看| 国产免费a∨片在线观看不卡| 成人h视频在线| 女人天堂亚洲aⅴ在线观看| 乱码一区二区三区| 欧美性色xo影院| www.亚洲资源| 亚洲字幕一区二区| 欧美精品乱码| 亚洲理论中文字幕| 国产亚洲欧洲997久久综合| 日韩精选在线观看| 久久视频在线视频| 精品综合久久88少妇激情| 亚洲 中文字幕 日韩 无码| 亚洲精品一区二区在线看| xvideos国产精品| 在线视频三区| 亚洲xxxx在线| 国产欧美大片| av最新在线观看| 亚洲国产精品va在线| 成人福利片在线| 男女啪啪免费视频网站| 欧美国产禁国产网站cc| 亚洲乱熟女一区二区| 国产精品免费一区| 雨宫琴音一区二区在线| 精品人妻无码一区| 色哟哟精品一区| 顶级网黄在线播放| 久久一区二区三区av| 国产精品一区在线观看你懂的| 中文字幕视频网| 欧美精品日韩三级| 国产精品3区| 黑森林福利视频导航| 亚洲最新在线观看| 粉嫩一区二区三区国产精品| 国产精品久久久一区二区三区| 日韩高清在线观看| 青青草av在线播放| 欧美成人午夜视频|