自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

這 六個(gè) TS 新特性經(jīng)常用到,用了之后我再也離不開它!

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

[[418393]]

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

在構(gòu)造函數(shù)中直接定義屬性

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

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

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

這個(gè)簡寫語法做了很多:

  • 聲明了一個(gè)構(gòu)造函數(shù)參數(shù)及其類型
  • 聲明了一個(gè)同名的公共屬性
  • 當(dāng)我們 new 出該類的一個(gè)實(shí)例時(shí),把該屬性初始化為相應(yīng)的參數(shù)值

空值合并

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

  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 

這個(gè)時(shí)候你肯定是想說了這樣不就完了嗎?

  1. let k = i || 5 

雖然這樣也用,但是你不覺得很不嚴(yán)謹(jǐn)嗎?如果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關(guān)鍵字之上使用私有類字段的區(qū)別在于前者有更好的運(yùn)行時(shí)保證。用private關(guān)鍵字聲明的 TypeScript 字段將在編譯后的JavaScript代碼中成為常規(guī)字段。另一方面,私有類字段在編譯后的代碼中仍然是私有的。

試圖在運(yùn)行時(shí)訪問私有類字段將導(dǎo)致語法錯(cuò)誤。我們也使用瀏覽器開發(fā)工具也檢查不了私有類字段。

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

命名元組類型(Labeled tuple types)

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

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

當(dāng)我們這樣定義函數(shù)入?yún)⒑?,在使用函?shù)時(shí),編輯器的智能提示只會(huì)提示我們參數(shù)類型,丟失了對參數(shù)含義的描述。

圖片

為了改善這一點(diǎn),我們可以通過 Labeled tuple types,我們可以這樣定義參數(shù):

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

這樣,在調(diào)用函數(shù)時(shí),我們的參數(shù)就獲得了相應(yīng)的語義,這使得代碼更加容易維護(hù)。

模板字面量類型

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

  1. const message = `text`; 

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

  • 定義多行字符串非常方便
  • 可以輕松地進(jìn)行變量和表達(dá)式的插值
  • 可以用模板標(biāo)簽創(chuàng)建 DSL(Domain Specific Language,領(lǐng)域特定語言)

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

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

當(dāng)我們定義了一個(gè)具體的字面量類型時(shí),TypeScript 會(huì)通過拼接內(nèi)容的方式產(chǎn)生新的字符串字面量類型。

實(shí)用類型

TypeScript為你提供了一組實(shí)用類型,讓你在現(xiàn)有類型的基礎(chǔ)上構(gòu)建新的類型。有許多實(shí)用類型涵蓋了不同的情況,例如選擇類型屬性來復(fù)制,大寫字母,或使所有的屬性都是可選的。

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

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

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

 

責(zé)任編輯:姜華 來源: 大遷世界
相關(guān)推薦

2021-05-16 07:44:01

Hadoop大數(shù)據(jù)HDFS

2021-10-27 10:15:25

Python新特性編程語言

2022-07-22 16:30:25

MacmacOS

2022-09-26 17:52:58

React

2021-08-23 11:35:00

工具yyds開源

2023-04-19 15:26:52

JavaScriptES13開發(fā)

2016-05-03 15:12:35

數(shù)據(jù)科學(xué)

2021-06-16 07:56:48

C++新特性類型

2021-09-03 09:57:13

開源技術(shù) 項(xiàng)目

2022-03-01 15:23:02

設(shè)計(jì)師創(chuàng)新互聯(lián)網(wǎng)

2022-02-24 10:48:01

Pycharm插件

2012-06-15 11:30:55

ibmdw

2023-10-07 09:52:30

容器Init

2024-12-04 09:27:56

2021-11-16 11:30:10

Linux命令運(yùn)維

2016-01-04 15:20:46

2016趨勢互聯(lián)網(wǎng)

2023-01-10 14:54:19

2023-11-26 18:26:26

聚類評價(jià)指標(biāo)監(jiān)督學(xué)習(xí)

2017-12-28 23:30:14

云計(jì)算混合云云安全

2023-04-27 13:05:12

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號