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

TypeScript中的類型斷言

開發 前端
本文是關于 TypeScript 中的 type assertions 的,它與其他語言中的類型強制轉換有相似之處,并通過 as 運算符執行。

[[413386]]

本文是關于 TypeScript 中的 type assertions 的,它與其他語言中的類型強制轉換有相似之處,并通過 as 運算符執行。

類型斷言

類型斷言使我們可以覆蓋 TypeScript 為存儲位置計算的靜態類型,這對于解決類型系統的限制很有用。

類型斷言與其他語言中的類型強制轉換有相似之處,但是它們不會引發異常,并且在運行時也不做任何事情(它們確實會靜態執行一些少量的檢查)。

  1. const data: object = ['a', 'b', 'c']; // (A) 
  2.  
  3. // @ts-ignore: Property 'length' does not exist on type 'object'. 
  4. data.length; // (B) 
  5.  
  6. assert.equal( 
  7.   (data as Array<string>).length, 3); // (C) 
  • 在 A 行中,我們把 Array 的類型擴展為 object。
  • 在 B 行中,我們看到此類型不允許訪問任何屬性。
  • 在 C 行中,我們用類型斷言(運算符 as)告訴 TypeScript data 是一個Array?,F在就可以訪問屬性 .length 了。

類型斷言是不得已的方法,應盡可能的避免。他們(暫時)刪除了靜態類型系統為我們提供的安全網。

注意,在 A 行中,我們還覆蓋了 TypeScript 的靜態類型,不過是通過類型注釋完成的。這種覆蓋方式比類型聲明要安全得多,因為你可以做的事情少得多。TypeScript 的類型必須能夠分配給注釋的類型。

(1) 類型斷言的替代語法

TypeScript 對于類型斷言有另一種“尖括號”語法:

  1. <Array<string>>data 

該語法已經過時,并且與 React JSX 代碼(在 .tsx 文件中)不兼容。

(2) 示例:聲明一個接口

為了訪問任意對象 obj 的屬性 .name,我們暫時將 obj 的靜態類型更改為 Named(A行和B行)。

  1. interface Named { 
  2.   name: string; 
  3. function getName(obj: object): string { 
  4.   if (typeof (obj as Named).name === 'string') { // (A) 
  5.     return (obj as Named).name; // (B) 
  6.   } 
  7.   return '(Unnamed)'; 

(3) 示例:聲明索引簽名

在以下代碼中,我們在行 A 用了類型斷言 as Dict ,以便可以訪問其推斷類型為 object 的值的屬性。也就是說,用靜態類型 Dict 覆蓋了推斷的靜態類型 object。

  1. type Dict = {[k:string]: any}; 
  2.  
  3. function getPropertyValue(dict: unknown, key: string): any { 
  4.   if (typeof dict === 'object' && dict !== null && key in dict) { 
  5.     // %inferred-type: object 
  6.     dict; 
  7.  
  8.     // @ ts-ignore:元素隱式具有“any”類型,因為 
  9.     // 類型'string'的表達式不能用于索引類型'{}'。 
  10.     // 在類型“ {}”上沒有找到參數類型為'string'的索引簽名。 
  11.     dict[key]; 
  12.      
  13.     return (dict as Dict)[key]; // (A) 
  14.   } else { 
  15.     throw new Error(); 
  16.   } 

與類型斷言相關的構造

(1) 非空斷言運算符(后綴 !)

如果值的類型是包含 undefined 或 null 類型的聯合,則 non-nullish聲明運算符(或 non-null 聲明運算符)將從聯合中刪除這些類型。我們告訴 TypeScript:“這個值不能是 undefined 或 null。”因此,我們可以執行這兩個值的類型所阻止的操作,例如:

  1. const theName = 'Jane' as (null | string); 
  2.  
  3. // @ts-ignore: Object is possibly 'null'. 
  4. theName.length; 
  5.  
  6. assert.equal( 
  7.   theName!.length, 4); // OK 

(2) 示例 – Maps: .has() 之后的 .get()

使用 Map 方法 .has() 之后,我們知道 Map 具有給定的鍵。遺憾的是,.get() 的結果不能反映這一點,這就是為什么我們必須使用 nullish 斷言運算符的原因:

  1. function getLength(strMap: Map<string, string>, key: string): number { 
  2.   if (strMap.has(key)) { 
  3.     // We are sure x is not undefined: 
  4.     const value = strMap.get(key)!; // (A) 
  5.     return value.length; 
  6.   } 
  7.   return -1; 

由于 strMap 的值永遠不會是 undefined,因此我們可以通過檢查 .get() 的結果是否為 undefined 來檢測丟失的 Map 條目(A 行):

  1. function getLength(strMap: Map<string, string>, key: string): number { 
  2.   // %inferred-type: string | undefined 
  3.   const value = strMap.get(key); 
  4.   if (value === undefined) { // (A) 
  5.     return -1; 
  6.   } 
  7.  
  8.   // %inferred-type: string 
  9.   value; 
  10.  
  11.   return value.length; 

(3) 定值斷言

如果打開 strict 屬性初始化,有時需要告訴 TypeScript 我們確實初始化某些屬性——即使它認為我們不需要這樣做。

這是一個例子,盡管 TypeScript 不應這樣做,但它仍會報錯:

  1. class Point1 { 
  2.   // @ts-ignore: Property 'x' has no initializer and is not definitely 
  3.   // assigned in the constructor. 
  4.   x: number; 
  5.  
  6.   // @ts-ignore: Property 'y' has no initializer and is not definitely 
  7.   // assigned in the constructor. 
  8.   y: number; 
  9.  
  10.   constructor() { 
  11.     this.initProperties(); 
  12.   } 
  13.   initProperties() { 
  14.     this.x = 0
  15.     this.y = 0
  16.   } 

如果我們在 A 行和 B 行中使用“定值分配斷言”(感嘆號),則錯誤會消失:

  1. class Point2 { 
  2.   x!: number; // (A) 
  3.   y!: number; // (B) 
  4.   constructor() { 
  5.     this.initProperties(); 
  6.   } 
  7.   initProperties() { 
  8.     this.x = 0
  9.     this.y = 0
  10.   } 

 

責任編輯:趙寧寧 來源: 前端先鋒
相關推薦

2025-08-20 00:03:00

TypeScriptAssertion函數

2023-10-29 16:18:26

Go接口

2022-04-11 08:42:09

TypeScript子類型定義

2024-05-11 10:19:31

TypeScript類型接口

2022-08-08 09:00:42

TypeScript映射類型

2015-07-08 16:00:32

Foundation

2022-04-10 19:26:07

TypeScript類型語法

2020-12-18 11:35:22

TypeScript語言Java

2022-02-25 09:06:02

TypeScripnever工具

2023-07-16 23:43:05

Go語言模式

2021-08-18 07:56:05

Typescript類型本質

2024-08-12 08:50:17

2025-09-01 07:22:10

inferTypeScripfetch

2022-09-20 14:43:55

TypeScript類型體操

2025-01-20 00:13:19

TypeScript操作符數據類型

2021-06-09 07:55:19

Typescript類型檢查

2024-03-20 00:04:46

TypeScriptas const類型斷言

2022-05-04 09:02:41

TypeScript類型工具

2022-08-10 09:03:35

TypeScript前端

2020-09-15 08:35:57

TypeScript JavaScript類型
點贊
收藏

51CTO技術棧公眾號

99精品国产一区二区三区2021| 性欧美videos另类hd| 亚洲瘦老头同性70tv| 在线免费亚洲电影| 中国人体摄影一区二区三区| 亚洲手机在线观看| 国色天香一区二区| 亚洲人成电影在线| 国内av免费观看| 黄色网页在线免费观看| 国产成+人+日韩+欧美+亚洲| 欧美亚洲国产精品| 国产黄a三级三级| 国产精品xxx在线观看| 老**午夜毛片一区二区三区| 中文字幕亚洲精品乱码| 欧美不卡一区二区| 亚洲少妇第一页| 日本色护士高潮视频在线观看| 91亚洲午夜精品久久久久久| 成人免费在线视频网址| 国产免费一级视频| 国产精品s色| 综合国产在线观看| 偷拍女澡堂一区二区三区| 国产午夜亚洲精品一级在线| 91久久国产综合久久| 成人在线国产视频| 日本韩国在线视频爽| 久久香蕉国产线看观看99| http;//www.99re视频| 中文字幕第三页| 亚洲欧美日本国产专区一区| 欧美多人乱p欧美4p久久| 99热99这里只有精品| 欧美综合精品| 亚洲国产成人爱av在线播放| 一起草最新网址| 桃子视频成人app| 天天色 色综合| 国产一级黄色录像片| 日本蜜桃在线观看| 中文字幕在线免费不卡| 日韩在线三区| 九九在线视频| 久久久久综合网| 欧美国产二区| 精品视频二区| 久久久精品日韩欧美| 精品国产综合久久| 内射无码专区久久亚洲| 成人精品在线视频观看| 国产精品二区三区四区| xxxwww在线观看| 国产一区二区调教| 亚洲一区二区免费| www.国产免费| 成人午夜大片免费观看| 国产精华一区二区三区| 亚洲男女视频在线观看| 高清免费成人av| 国产精品久久久久久久久久直播 | 青青青青在线| 国产精品国产自产拍在线| 亚洲精品一区二区三区樱花| 在线观看av的网站| 中文字幕日韩精品一区| 欧美 国产 精品| 搞黄网站在线看| 性感美女极品91精品| 浮妇高潮喷白浆视频| 亚洲欧美韩国| 欧美性xxxxxxxx| 久久久久久久久久一区二区| 国产精品一级在线观看| 精品欧美一区二区久久 | 91在线一区| 日韩精品久久久久久久玫瑰园| 一出一进一爽一粗一大视频| 九色精品国产蝌蚪| xxxx欧美18另类的高清| 欧美日韩在线视频免费| 国产深夜精品| 国产免费观看久久黄| 99精品久久久久久中文字幕 | 欧美日韩久久一区二区| 少妇丰满尤物大尺度写真| 成人av综合网| 有码中文亚洲精品| 黄色一级片中国| 一区二区激情| 91欧美激情另类亚洲| 刘亦菲毛片一区二区三区| 久久午夜色播影院免费高清| 日本一区二区三区四区高清视频 | 人妻夜夜爽天天爽| 国产婷婷色一区二区三区四区| 欧美性视频在线播放| 九九精品调教| 在线观看免费成人| 亚洲熟女一区二区三区| 国产99久久精品一区二区300| 久久夜色撩人精品| 国产免费av一区| 国产一区二区电影| 欧美日韩免费精品| 四虎影视成人| 欧美丝袜丝交足nylons| 欧美激情 亚洲| 91视频综合| 欧美在线亚洲一区| 亚洲精品久久久久久久久久 | 亚洲毛片在线看| 玖玖爱免费视频| 久久精品免费看| 久久艹中文字幕| av毛片在线看| 欧美日韩色一区| v8888av| 欧美午夜一区| 91香蕉亚洲精品| 91在线视频免费看| 日韩欧美精品网址| 大桥未久恸哭の女教师| 亚洲精品久久| 国产精品一区二区三区毛片淫片| 视频在线不卡| 亚洲成a人片在线观看中文| 亚洲高清视频免费| 日韩激情在线| 国产精品久久久久国产a级| 婷婷五月综合久久中文字幕| 一个色妞综合视频在线观看| 91欧美一区二区三区| 手机亚洲手机国产手机日韩| 国产aⅴ夜夜欢一区二区三区| 欧美 日韩 国产 成人 在线| 一区二区免费看| 男插女视频网站| 91精品国产视频| 91精品久久久久| 日韩av中文| 精品1区2区3区| 日本美女xxx| 欧美bbbbb| 天天综合狠狠精品| 小明成人免费视频一区| 国产亚洲精品久久久久久| av网站中文字幕| 久久久久久久综合日本| 日韩免费毛片视频| 自拍偷拍精品| 国产成人亚洲精品| 国产一级片在线| 欧美系列日韩一区| 你懂得在线观看| 国产综合久久久久影院| 亚洲av综合色区| www.久久东京| 97热精品视频官网| 色资源在线观看| 91福利精品视频| 欧美性猛交xxxx乱大交少妇| 久久99热这里只有精品| 国产一二三四区在线观看| 欧美久久亚洲| 性色av一区二区三区免费| 亚洲 欧美 激情 另类| 在线免费av一区| 午夜国产福利视频| 国产成人午夜片在线观看高清观看| 黄色特一级视频| 成人爽a毛片免费啪啪红桃视频| 久久免费视频在线| 狠狠v欧美ⅴ日韩v亚洲v大胸| 欧美自拍丝袜亚洲| 五月天婷婷色综合| 不卡的av在线播放| 青青草av网站| 综合天天久久| 欧美激情第一页在线观看| 日本成人福利| 久久国产精品免费视频| 免费观看黄色av| 91国在线观看| 强行糟蹋人妻hd中文| 99r精品视频| 美女网站色免费| 精品1区2区3区4区| 日本一区二区不卡高清更新| 国产专区精品| 欧美在线亚洲一区| 成人在线影视| 亚洲开心激情网| jlzzjlzzjlzz亚洲人| 色综合天天综合| 久久99久久98精品免观看软件| 久久综合九色综合欧美亚洲| 午夜xxxxx| 噜噜噜在线观看免费视频日韩| 一区二区三区不卡在线| 美女网站色精品尤物极品姐弟| 国产精品人人做人人爽| av色在线观看| 在线观看亚洲视频| 天天操天天操天天干| 911国产精品| 亚洲天堂男人av| 亚洲美女视频一区| 亚洲一区 欧美| 成人国产精品视频| av中文字幕网址| 亚洲黄色三级| 警花观音坐莲激情销魂小说| 精品国产一区探花在线观看| 国产亚洲一区在线播放| 国产精品毛片aⅴ一区二区三区| 欧美专区第一页| free性护士videos欧美| 免费91在线视频| 免费av网站在线观看| 亚洲性无码av在线| 亚洲色图欧美视频| 精品国产乱码久久久久久蜜臀 | 色就是色欧美| 伊人精品一区| 久久久精品国产一区二区三区| 日韩欧美中文字幕在线视频| 国产色婷婷国产综合在线理论片a| 在线视频cao| 91国内免费在线视频| 性欧美videos高清hd4k| 久久久国产一区二区三区| 成人免费在线电影| 亚洲人成欧美中文字幕| 青青青免费视频在线2| 精品国产青草久久久久福利| 99热这里精品| 日韩一区二区在线观看视频播放| 亚洲中文一区二区三区| 亚洲一区二区三区四区在线免费观看 | 日韩一区欧美小说| 99re6热在线精品视频| 国产拍欧美日韩视频二区| 成人午夜福利一区二区| 91丨porny丨首页| 男生裸体视频网站| 久久在线观看免费| theav精尽人亡av| 91天堂素人约啪| 高潮毛片无遮挡| 中文字幕欧美国产| 日本一道本视频| 国产精品久久久久天堂| 久久国产高清视频| 亚洲视频免费观看| 国产免费无码一区二区视频| 亚洲精品久久7777| 国产精久久久久久| 精品福利一区二区| 成人午夜视频在线播放| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 国产色片在线观看| 日韩亚洲欧美一区| 隣の若妻さん波多野结衣| 日韩久久精品成人| 国产高清在线观看| 中文字幕亚洲二区| av免费在线网站| 91精品国产高清自在线| 网友自拍亚洲| 成人免费观看网址| 国产精品对白久久久久粗| 韩国成人动漫在线观看| 久久91麻豆精品一区| 这里只有精品66| 国产精品九九| 久久人妻精品白浆国产| 蜜臀久久99精品久久久画质超高清| 中文字幕亚洲影院| 成人av在线观| 一二三四在线观看视频| 亚洲综合成人网| 丁香社区五月天| 日韩欧美色综合网站| 三级毛片在线免费看| 中文字幕欧美精品日韩中文字幕| 亚洲色图美国十次| 日韩av毛片网| 亚洲一区二区电影| 日韩av电影免费在线| 欧美日韩国产高清| 日本xxxxxxx免费视频| 国产福利视频一区二区三区| 午夜在线观看一区| 亚洲日本护士毛茸茸| 日本中文在线播放| 在线不卡一区二区| 午夜老司机福利| 色妞色视频一区二区三区四区| 黑人玩欧美人三根一起进| 国产精品wwwwww| 国产suv精品一区二区四区视频| 日韩欧美精品久久| 无码精品黑人一区二区三区| 99久久国产综合精品女不卡| 精品日韩在线视频| 欧美日韩性视频| 国产免费视频一区二区三区| 亚洲精品综合久久中文字幕| 成人福利片网站| 国产成人鲁鲁免费视频a| 51亚洲精品| 一区二区91美女张开腿让人桶| 宅男噜噜噜66一区二区 | 99久久综合国产精品二区| 国产一区二区黄色| 亚洲五月综合| 亚洲欧美自偷自拍另类| 久久综合网色—综合色88| 免费在线视频一区二区| 欧美日韩国产综合一区二区| 毛片在线播放网址| 91av在线播放视频| 国产精品视屏| 精品一区二区三区毛片| 久久国产三级精品| 中文字幕第4页| 色综合久久综合网97色综合| 亚洲精品97久久中文字幕无码| www.亚洲一区| 欧美成人家庭影院| 日韩欧美一区二区三区久久婷婷| 夜夜嗨av一区二区三区网站四季av| 男人操女人下面视频| 亚洲精选免费视频| av在线资源观看| 欧美理论电影在线播放| 国产一区二区在线观| 亚洲最新免费视频| 久久精品国产精品亚洲精品| 国产真人做爰视频免费| 色噜噜夜夜夜综合网| 黄色片在线播放| 日本伊人精品一区二区三区介绍| 欧美日韩一区二区三区四区不卡| 91黄色在线看| www.激情成人| 国产高清中文字幕| 亚洲精品电影在线| 日韩伦理在线| 日韩av一区二区三区在线| 葵司免费一区二区三区四区五区| 少妇大叫太粗太大爽一区二区| 天天操天天色综合| 欧洲成人av| 国产精品18久久久久久麻辣| 欧美日韩一二三四| 欧美大片久久久| 亚洲蜜桃精久久久久久久| 国产 日韩 欧美 精品| 午夜精品三级视频福利| 日韩伦理一区二区三区| 农村妇女精品一二区| 欧美国产日韩a欧美在线观看 | 精品久久久影院| 金瓶狂野欧美性猛交xxxx| 国内精品视频免费| 久久综合九色| 婷婷国产成人精品视频| 欧美一区二区不卡视频| 91禁在线看| 欧美精品免费观看二区| 日本欧美大码aⅴ在线播放| 免费精品在线视频| 精品久久国产97色综合| 在线看片国产福利你懂的| 色噜噜狠狠一区二区三区| 国产高清视频一区| av黄色在线看| www.亚洲男人天堂| 豆花视频一区二区| 一级黄色香蕉视频| 亚洲精品日韩综合观看成人91| 蜜臀久久精品久久久久| 国产精品狼人色视频一区| 一区二区影视| 日韩一级视频在线观看| 欧美人伦禁忌dvd放荡欲情| av老司机免费在线| 天堂精品视频| 盗摄精品av一区二区三区| 99成人精品视频| 欧美精品福利视频| 欧美手机视频| 荫蒂被男人添免费视频| 欧美日韩在线播放三区四区| 91老司机福利在线| 中文字幕在线亚洲精品| 91网站在线播放|