成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這 六個 TS 新特性經常用到,用了之后我再也離不開它!

開發 前端
今天來介紹一下 TypeScript 的一些較新的功能和進展,這些是我在日常工作中經常在用的功能。希望對你有所幫助!

[[418393]]

今天來介紹一下 TypeScript 的一些較新的功能和進展,這些是我在日常工作中經常在用的功能。

在構造函數中直接定義屬性

Typescript 中可以通過構造函數的參數直接定義屬性,我們來先看早期的做法:

  1. class Note { 
  2.   public title: string; 
  3.   public content: string; 
  4.   private history: string[]; 
  5.    
  6.   constructor(title: string, content: string, history: string[]) { 
  7.     this.title = title; 
  8.     this.content = content; 
  9.     this.history = history; 
  10.      
  11.   } 

采用 ts 中簡寫的語法:

  1. class Note { 
  2.   constructor( 
  3.      public title: string,  
  4.      public content: string,  
  5.      private history: string[] 
  6.   ){ 
  7.     // 這里不用在寫 this.title = title 
  8.   } 

它可能看上去不像是有屬性的類,但它確實有,利用的是 Typescript 提供的簡寫形式 — 用構造函數的參數直接定義屬性。

這個簡寫語法做了很多:

  • 聲明了一個構造函數參數及其類型
  • 聲明了一個同名的公共屬性
  • 當我們 new 出該類的一個實例時,把該屬性初始化為相應的參數值

空值合并

??其實沒啥意思,就是Nullish Coalescing (空值合并)。聽起來有點懵,我們直接上代碼

  1. const i = undefined 
  2. const k = i ?? 5 
  3. console.log(k) // 5 
  4.  
  5. // 3.9.2編譯 
  6. const i = undefined; 
  7. const k = i !== null && i !== void 0 ? i : 5; 
  8. console.log(k); // 5 

這個時候你肯定是想說了這樣不就完了嗎?

  1. let k = i || 5 

雖然這樣也用,但是你不覺得很不嚴謹嗎?如果i = 0呢?

私有類字段

TypeScript 3.8 將支持 ECMAScript 私有字段,千萬別和 TypeScript private 修飾符 混淆。

這是在 TypeScript 中具有私有類字段的類:

  1. class Animal { 
  2.   #name: string; 
  3.   constructor(theName: string) { 
  4.     this.#name = theName; 
  5.   } 

在private關鍵字之上使用私有類字段的區別在于前者有更好的運行時保證。用private關鍵字聲明的 TypeScript 字段將在編譯后的JavaScript代碼中成為常規字段。另一方面,私有類字段在編譯后的代碼中仍然是私有的。

試圖在運行時訪問私有類字段將導致語法錯誤。我們也使用瀏覽器開發工具也檢查不了私有類字段。

有了私有類字段,我們終于在JavaScript中得到了真正的隱私。

命名元組類型(Labeled tuple types)

命名元組類型適需要 TypeScript 4.0及以上版本才能使用,它極大的改善了我們的開發體驗及效率,先來看一個例子:

  1. type Address = [string, number] 
  2.  
  3. function setAddress(...args: Address) { 
  4.   // some code here 
  5.   console.log(args) 

當我們這樣定義函數入參后,在使用函數時,編輯器的智能提示只會提示我們參數類型,丟失了對參數含義的描述。

圖片

為了改善這一點,我們可以通過 Labeled tuple types,我們可以這樣定義參數:

  1. type Address = [streetName: string, streetNumber: number] 
  2.  
  3. function setAddress(...args: Address) { 
  4.   // some code here 
  5.   console.log(args) 
圖片

這樣,在調用函數時,我們的參數就獲得了相應的語義,這使得代碼更加容易維護。

模板字面量類型

自 ES6 開始,我們就可以通過模板字面量(Template Literals)的特性,用反引號來書寫字符串,而不只是單引號或雙引號:

  1. const message = `text`; 

正如 Flavio Copes 所言,模板字面量提供了之前用引號寫的字符串所不具備的特性:

  • 定義多行字符串非常方便
  • 可以輕松地進行變量和表達式的插值
  • 可以用模板標簽創建 DSL(Domain Specific Language,領域特定語言)

模板字面量類型和 JavaScript 中的模板字符串語法完全一致,只不過是用在類型定義里面:

  1. type topBottom = "top" | "bottom" 
  2. type leftRight = "left" | "right" 
  3.  
  4. type Position = `${topBottom }-${leftRight }` 
圖片

當我們定義了一個具體的字面量類型時,TypeScript 會通過拼接內容的方式產生新的字符串字面量類型。

實用類型

TypeScript為你提供了一組實用類型,讓你在現有類型的基礎上構建新的類型。有許多實用類型涵蓋了不同的情況,例如選擇類型屬性來復制,大寫字母,或使所有的屬性都是可選的。

下面是一個使用 Omit工具的例子,它復制了原始類型的所有屬性,除了我們選擇不包括的那些。

圖片
  1. type User = { 
  2.   name: string 
  3.   age: number 
  4.   location: string 
  5.  
  6. type MyUser = Omit<User'name'

上面這些就是我工作經常使用的一部分,另外一些后面在分享,就這?

 

責任編輯:姜華 來源: 大遷世界
相關推薦

2021-10-27 10:15:25

Python新特性編程語言

2021-05-16 07:44:01

Hadoop大數據HDFS

2022-07-22 16:30:25

MacmacOS

2021-08-23 11:35:00

工具yyds開源

2022-09-26 17:52:58

React

2023-04-19 15:26:52

JavaScriptES13開發

2021-09-03 09:57:13

開源技術 項目

2016-05-03 15:12:35

數據科學

2022-03-01 15:23:02

設計師創新互聯網

2021-06-16 07:56:48

C++新特性類型

2012-06-15 11:30:55

ibmdw

2022-02-24 10:48:01

Pycharm插件

2023-10-07 09:52:30

容器Init

2024-12-04 09:27:56

2016-01-04 15:20:46

2016趨勢互聯網

2021-11-16 11:30:10

Linux命令運維

2023-11-26 18:26:26

聚類評價指標監督學習

2022-05-02 16:18:22

RocketMQBrokertopic

2019-07-19 20:34:32

2024-04-11 08:29:35

Kafka異步發送發送端重試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美成人在线影院 | 精品欧美乱码久久久久久1区2区 | 四虎影院久久 | 日韩国产一区二区三区 | 久久久久91 | 天天久久 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 黄色综合 | 综合国产第二页 | 亚洲一区二区视频 | av激情影院 | 国产精品久久av | 北条麻妃一区二区三区在线观看 | 国产精品美女久久久久久免费 | 欧美日日日日bbbbb视频 | 国产超碰人人爽人人做人人爱 | 九九国产在线观看 | 亚洲成人av | 亚洲欧美一区二区在线观看 | 蜜桃综合在线 | 国产a区 | 国产精品一区在线观看 | 一级毛片黄片 | 亚洲喷水| 91视频.com| 麻豆视频在线看 | 国产精品视频一区二区三区 | 欧美人妖网站 | 中文在线播放 | 男人的天堂一级片 | 欧美黑人激情 | 国产一区二区三区在线看 | 色姑娘av | 韩日一区二区三区 | 国产精久久久 | 久久精品国产一区老色匹 | 秋霞电影一区二区三区 | 福利成人| 国产精品永久久久久 | 麻豆视频国产在线观看 | 日韩一区二区三区在线视频 |