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

比同事更秀? TS 這七個方法,你需要知道的!

開發(fā) 前端
TypeScript 中的類型系統(tǒng)是非常強大的。它為我們提供了類型安全。類型系統(tǒng)雖然受人喜愛,但如果我們不規(guī)劃和設(shè)計類型和接口,它也會讓我們的代碼變得混亂難讀。

[[421067]]

TypeScript 中的類型系統(tǒng)是非常強大的。它為我們提供了類型安全。類型系統(tǒng)雖然受人喜愛,但如果我們不規(guī)劃和設(shè)計類型和接口,它也會讓我們的代碼變得混亂難讀。

泛型

避免代碼重復(fù)中,創(chuàng)建可重用的類型,是我們編寫簡潔代碼重要的一環(huán)。泛型是 TypeScript 的一個功能,它允許我們編寫可重用的類型??聪旅娴睦樱?/p>

  1. type Add<T> = (a: T, b: T) => T 
  2.  
  3. const addNumbers: Add<number> = (a, b) => { 
  4.   return a + b 
  5.  
  6. const addStrings: Add<string> = (a, b) => { 
  7.   return a + b 

將正確的類型放入Add的泛型中,它可以被用來描述兩個數(shù)字的相加或兩個字符串的連接。我們不需要為每個函數(shù)寫一個類型,而只需要用泛型做一次。這不僅節(jié)省了我們的精力,而且還使我們的代碼更加簡潔,更不容易出錯。

實用類型

TypeScript 原生提供了幾個有用的實用類型來幫助我們進行一些常見的類型轉(zhuǎn)換。這些實用類型是全局可用的,它們都使用了泛型。

下面這7個是我經(jīng)常用到的。

1. Pick<Type, Keys>

Pick會從 Type 中挑選屬性集 Keys 來創(chuàng)建一個新的類型,Keys 可以是一個字符串字面或字符串字面的聯(lián)合。Keys 的值必須是 Type 的鍵,否則TypeScript編譯器會抱怨。當(dāng)你想通過從有很多屬性的對象中挑選某些屬性來創(chuàng)建更輕的對象時,這個實用類型特別有用。

  1. type User = { 
  2.   name: string 
  3.   age: number 
  4.   address: string 
  5.   occupation: string 
  6.  
  7. type BasicUser = Pick<User"name" | "age"
  8.  
  9. // type BasicUser = { 
  10. //   name: string; 
  11. //   age: number; 
  12. // } 

2. Omit<Type, Keys>

Omit與Pick相反。Keys 不是說要保留哪些屬性,而是指要省略的屬性鍵集。當(dāng)我們只想從對象中刪除某些屬性并保留其他屬性時,這個會更有用。

  1. type User = { 
  2.   name: string 
  3.   age: number 
  4.   address: string 
  5.   occupation: string 
  6.  
  7. type BasicUser = Omit<User"address" | "occupation"
  8.  
  9. // type BasicUser = { 
  10. //   name: string; 
  11. //   age: number; 
  12. // } 

3. Partial<Type>

Partial 構(gòu)造了一個類型,其所有的類型屬性都設(shè)置為可選。當(dāng)我們在編寫一個對象的更新邏輯時,這個可能非常有用。

  1. type User = { 
  2.   name: string 
  3.   age: number 
  4.   address: string 
  5.   occupation: string 
  6.  
  7. type PartialUser = Partial<User
  8.  
  9. // type PartialUser = { 
  10. //   name?: string; 
  11. //   age?: number; 
  12. //   address?: string; 
  13. //   occupation?: string; 
  14. // } 

4. Required<Type>

Required與Partial相反。它構(gòu)造了一個類型的所有屬性都是必填的類型。它可以被用來確保在一個類型中沒有可選屬性出現(xiàn)。

  1. type PartialUser = { 
  2.   name: string 
  3.   age: number 
  4.   address?: string 
  5.   occupation?: string 
  6.  
  7. type User = Required<PartialUser> 
  8.  
  9. // type User = { 
  10. //   name: string; 
  11. //   age: number; 
  12. //   address: string; 
  13. //   occupation: string; 
  14. // } 

5. Readonly<Type>

Readonly 構(gòu)建了一個類型,其類型的所有屬性被設(shè)置為只讀。重新分配新的值 TS 就會報錯。

  1. type User = { 
  2.   name: string 
  3.   age: number 
  4.   address: string 
  5.   occupation: string 
  6.  
  7. type ReadOnlyUser = Readonly<User
  8.  
  9. const user: ReadOnlyUser = { 
  10.   name"小智"
  11.   age: 24, 
  12.   address: "廈門"
  13.   occupation: "大遷世界" 
  14.  
  15. user.name = "王大冶" 
  16. // Cannot assign to 'name' because it is a read-only property. 

7. ReturnType<Type>

ReturnType 從一個函數(shù)類型的返回類型構(gòu)建一個類型。當(dāng)我們處理來自外部庫的函數(shù)類型并希望基于它們建立自定義類型時,它是非常有用的。

  1. import axios from 'axios' 
  2.  
  3. type Response = ReturnType<typeof axios> 
  4.  
  5. function callAPI(): Response{ 
  6.   return axios("url"

除了上面提到的,還有其他實用類型可以幫助我們編寫更干凈代碼。關(guān)于實用工具類型的TypeScript文檔鏈接可以在這里找到。

https://www.typescriptlang.org/docs/handbook/utility-types.html

實用類型是TypeScript提供的非常有用的功能。開發(fā)人員應(yīng)該利用它們來避免硬編碼類型。要比同事更秀? 這些就是你需要知道的!

~完,我是刷碗智,準(zhǔn)備去去那個了,我們下期見!

作者:juno ng 譯者:前端小智

來源:medium 原文:https://medium.com/ng/7-utility-types-that-every-typescript-developer-should-know-788fe73421f1

【編輯推薦】

 

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

2023-03-19 16:02:33

JavaScrip技巧編程語言

2022-12-12 13:19:11

Vue3開發(fā)技巧

2022-12-30 11:04:23

科技人工智能

2024-04-26 13:36:01

2022-03-22 18:12:26

網(wǎng)絡(luò)攻擊數(shù)據(jù)安全安全威脅

2022-03-11 13:13:15

LinuxWindows

2011-01-19 10:42:25

2011-09-10 20:56:05

2022-10-08 14:29:58

數(shù)據(jù)安全釣魚郵件

2016-11-17 18:37:44

機房建設(shè)

2022-04-05 11:29:40

Linux安裝操作系統(tǒng)

2020-03-27 12:30:39

python開發(fā)代碼

2016-01-20 10:40:55

2016物聯(lián)網(wǎng)

2021-04-15 08:04:27

容器DevOps程序

2015-08-11 17:55:21

谷歌重組科技

2023-01-09 17:23:14

CSS技巧

2013-03-04 09:34:48

CSSWeb

2024-04-03 10:29:13

JavaScrip優(yōu)化技巧

2025-01-26 10:49:52

2011-09-20 10:56:35

云計算PaaS
點贊
收藏

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