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

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

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

[[421067]]

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

泛型

避免代碼重復中,創建可重用的類型,是我們編寫簡潔代碼重要的一環。泛型是 TypeScript 的一個功能,它允許我們編寫可重用的類型。看下面的例子:

  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的泛型中,它可以被用來描述兩個數字的相加或兩個字符串的連接。我們不需要為每個函數寫一個類型,而只需要用泛型做一次。這不僅節省了我們的精力,而且還使我們的代碼更加簡潔,更不容易出錯。

實用類型

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

下面這7個是我經常用到的。

1. Pick<Type, Keys>

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

  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 不是說要保留哪些屬性,而是指要省略的屬性鍵集。當我們只想從對象中刪除某些屬性并保留其他屬性時,這個會更有用。

  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 構造了一個類型,其所有的類型屬性都設置為可選。當我們在編寫一個對象的更新邏輯時,這個可能非常有用。

  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相反。它構造了一個類型的所有屬性都是必填的類型。它可以被用來確保在一個類型中沒有可選屬性出現。

  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 構建了一個類型,其類型的所有屬性被設置為只讀。重新分配新的值 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 從一個函數類型的返回類型構建一個類型。當我們處理來自外部庫的函數類型并希望基于它們建立自定義類型時,它是非常有用的。

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

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

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

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

~完,我是刷碗智,準備去去那個了,我們下期見!

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

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

【編輯推薦】

 

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

2023-03-19 16:02:33

JavaScrip技巧編程語言

2022-12-12 13:19:11

Vue3開發技巧

2022-12-30 11:04:23

科技人工智能

2024-04-26 13:36:01

2022-03-22 18:12:26

網絡攻擊數據安全安全威脅

2022-03-11 13:13:15

LinuxWindows

2011-09-10 20:56:05

2011-01-19 10:42:25

2022-10-08 14:29:58

數據安全釣魚郵件

2016-11-17 18:37:44

機房建設

2022-04-05 11:29:40

Linux安裝操作系統

2020-03-27 12:30:39

python開發代碼

2016-01-20 10:40:55

2016物聯網

2021-04-15 08:04:27

容器DevOps程序

2013-03-04 09:34:48

CSSWeb

2023-01-09 17:23:14

CSS技巧

2015-08-11 17:55:21

谷歌重組科技

2025-01-26 10:49:52

2024-04-03 10:29:13

JavaScrip優化技巧

2011-09-20 10:56:35

云計算PaaS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草热视频 | 1级黄色大片 | 亚洲精品久久久蜜桃 | 亚洲精视频 | 亚洲精品一区二区在线观看 | 亚洲国产精品精华素 | 毛片免费观看 | 色综合天天综合网国产成人网 | 国产亚洲精品久久久久久牛牛 | 国产在线a | 亚洲大片 | 久久精品一区二区 | 国产一级片久久久 | 久久精品亚洲成在人线av网址 | 久久久久久国产精品免费免费男同 | 香蕉婷婷 | 国产精品一区二区三区在线 | 91n成人| 国产乱精品一区二区三区 | 国产情品 | 亚洲激情在线观看 | 欧美精品第三页 | 天天宗合网 | 亚洲三级在线观看 | 久草免费在线视频 | 一区二区三区四区电影视频在线观看 | 久久人人网 | 日本视频一区二区 | 神马久久久久久久久久 | 日本成人免费网站 | 九九热精品在线 | 久久美女网 | 一级黄色片日本 | 国产精品揄拍一区二区久久国内亚洲精 | 男女在线免费观看 | 夜夜精品浪潮av一区二区三区 | 365夜爽爽欧美性午夜免费视频 | 亚洲精品久久久久久久久久久 | 国产三级一区二区 | 欧洲一区视频 | 国产99精品 |