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

使用更具可讀性的方式來設(shè)置 TypeScript 類型

開發(fā) 前端
TypeScript 提供了一些內(nèi)置的實(shí)用類型,可以更好的方式將類型從一種形式轉(zhuǎn)換到另一種形式。

[[405512]]

TypeScript 提供了一些內(nèi)置的實(shí)用類型,可以更好的方式將類型從一種形式轉(zhuǎn)換到另一種形式。

這些內(nèi)置的類型全局可用的,所以可以很方便的使用它們。

TypeScript 泛型

在了解 TypeScript 實(shí)用、類型之前,類型別名和泛型很重要。我們以在TypeScript中為任何現(xiàn)有類型創(chuàng)建類型別名。

  1. type MyString = string; 
  2.  
  3. let helloWorldMessage: MyString = 'Hello Wisdom Geek'

泛型用于創(chuàng)建可重用的類型別名。假設(shè)我們有一個identity 函數(shù),該函數(shù)返回傳遞的任何值:

  1. const identity = (arg: string): string => arg; 

如果我們要返回的是 number 類型怎么辦?有小伙伴可能會用any代替特定的類型

  1. const identity = (arg: any): any => arg; 

但這減少了參數(shù)的類型信息,因此,也失去 TypeScript 帶來的好處。我們想要以一種可以用來表示返回類型的方式來捕獲參數(shù)的類型。這就是泛型派上用場的地方。我們將使用適用于類型而不是值的類型變量。

  1. const identity<T> = (arg: T): T => arg; 

接著,在調(diào)用它時指定函數(shù)的類型:

  1. const output = identity<string>("Hello Wisdom Geek"); 

TypeScript 中的內(nèi)置實(shí)用類型

在開始講解內(nèi)置實(shí)用類型之前,這些工具類型在4.0版本之前是可用的,不需要任何額外的包。

Partial

Pritial<T>把 T 的所有屬性變?yōu)榭蛇x。

  1. type BlogPost = { 
  2.   title: string; 
  3.   author: string; 
  4.  
  5. type PartialBlogPost = Partial<BlogPost>; 
  6. /* 等價于 { 
  7.   title?: string; 
  8.   author?: string; 
  9. } */ 

Required

Required<T>把 T 的所有屬性變?yōu)楸靥畹摹?t>

  1. type PartialBlogPost = { 
  2.   title?: string; 
  3.   author?: string; 
  4.  
  5. type BlogPost = Required<PartialBlogPost>; 
  6. /* 等價于 { 
  7.   title: string; 
  8.   author: string; 
  9. } */ 

Readonly

Readonly<T>把 T 的所有屬性變?yōu)橹蛔x的。

  1. type BlogPost = { 
  2.   title: string; 
  3.   author: string; 
  4.  
  5. type BlogPost = Readonly<PartialBlogPost>; 
  6. /* 等價于 { 
  7.   readonly title: string; 
  8.   readonly author: string; 
  9. } */ 

Pick

Pick<T,K> 抽取T里的屬性,屬性來自K.

  1. type Point3D = { 
  2.   x: number, 
  3.   y: number, 
  4.   z: number, 
  5. }; 
  6.  
  7.  
  8. type Point2D = Pick<Point3D, 'x'|'y'>; 
  9. /* 等價于 { 
  10.   x: number, 
  11.   y: number 
  12. } */ 

Parameters

Parameters<T> T 是 Function,提取函數(shù)里返回值為 tuple。

  1. type T0 = Parameters<() => string>; 
  2. // type T0 = [] 
  3.  
  4. type T1 = Parameters<(s: string) => void>;  
  5. // type T1 = [s: string] 
  6.  
  7. type T2 = Parameters<<T>(arg: T) => T>; 
  8. // type T2 = [arg: unknown] 

Omit

Omit<T,K>和Pick相反(去除屬性).

  1. type Point3D = { 
  2.   x: number, 
  3.   y: number, 
  4.   z: number, 
  5. }; 
  6.  
  7.  
  8. type Point2D = Omit<Point3D, 'z'>; 
  9. /* same as { 
  10.   x: number, 
  11.   y: number 
  12. } */ 

Record

Record<K,T>生成一個接口,屬性為K的所有屬性,k的所有屬性都有T的類型

  1. type BlogPost = Record<'title' | 'author', strnig> 
  2.  
  3. /* same as { 
  4.   title: string; 
  5.   author: string; 
  6. } */ 

如果所有類型都具有相同的值,則聲明的 Record 版本會更加簡潔和可讀,因?yàn)樗鼈兌季哂邢嗤念愋汀?/p>

Extract

Extract<T, U> - 用于從類型T中取出可分配給U類型的成員

  1. type T0 = Extract<"a" | "b" | "c""a" | "f">; 
  2.      // type T0 = "a" 
  3. type T1 = Extract<string | number | (() => void), Function>;   
  4.      // type T1 = () => void 

Exclude

Exclude<T, U> - 用于從類型T中去除不在U類型中的成員。

  1. type T0 = Exclude<"a" | "b" | "c""a">; 
  2.      // type T0 = "b" | "c" 
  3.  
  4. type T1 = Exclude<string | number | (() => void), Function>; 
  5.      // type T2 = string | number 

NonNullable

NonNullable<T>- 用于從類型T中去除undefined和null類型。

  1. type T0 = NonNullable<string | number | undefined>; 
  2.      // type T0 = string | number 
  3.  
  4. type T1 = NonNullable<string[] | null | undefined>; 
  5.      // type T1 = string[] 

ReturnType

ReturnType<T>- 獲取函數(shù)類型的返回類型

  1. type T0 = ReturnType<() => string>; 
  2.       
  3. type T0 = string 
  4. type T1 = ReturnType<(s: string) => void>; 
  5.       
  6. type T1 = void 
  7. type T2 = ReturnType<<T>() => T>; 
  8.       
  9. type T2 = unknown 
  10. type T3 = ReturnType<<T extends U, U extends number[]>() => T>; 
  11.       
  12. type T3 = number[] 
  13.  
  14. type T5 = ReturnType<any>; 
  15.       
  16. type T5 = any 
  17. type T6 = ReturnType<never>; 
  18.       
  19. type T6 = never 
  20. type T7 = ReturnType<string>; 

InstanceType

InstanceType<T>- 獲取構(gòu)造函數(shù)的實(shí)例類型

  1. class C { 
  2.   x = 0; 
  3.   y = 0; 
  4.  
  5. type T0 = InstanceType<typeof C>; 
  6.       
  7. type T0 = C 
  8. type T1 = InstanceType<any>; 
  9.       
  10. type T1 = any 
  11. type T2 = InstanceType<never>; 
  12.       
  13. type T2 = never 

~完,我是小智。

更多實(shí)用類別,請自行看官網(wǎng)。https://www.typescriptlang.org/docs/handbook/utility-types.html#uppercasestringtype

作者:SARANSH KATARIA 譯者:前端小智 來源:wisdomgeek

原文:https://www.wisdomgeek.com/development/web-development/typescript/using-utility-types-for-transforming-typescript-types/

本文轉(zhuǎn)載自微信公眾號「大遷世界」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系大遷世界公眾號。

 

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

2021-01-26 09:18:27

Shell腳本網(wǎng)站

2023-10-30 18:05:55

Python類型

2024-08-02 16:20:06

2021-10-09 10:24:53

Java 代碼可讀性

2020-11-08 14:36:27

pandas數(shù)據(jù)分析pipe()

2021-04-01 16:43:05

代碼可讀性開發(fā)

2017-10-30 15:22:29

代碼可讀性技巧

2015-08-27 13:11:18

JavaScript代碼

2024-04-23 08:01:20

面向?qū)ο?/a>C 語言代碼

2022-08-23 14:57:43

Python技巧函數(shù)

2017-12-19 16:24:20

2022-08-29 00:37:53

Python技巧代碼

2019-12-03 09:32:32

JavaScript代碼開發(fā)

2022-11-04 11:18:16

代碼優(yōu)化可讀性

2024-01-31 08:04:43

PygmentsPython

2014-07-28 10:28:25

程序員

2014-07-29 09:55:33

程序員代碼可讀性

2024-10-11 06:00:00

Python代碼編程

2024-10-07 10:00:00

Python代碼編碼

2023-01-30 08:16:39

Go語言Map
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美成人一区二区三区 | 亚洲国产一区二区三区在线观看 | aaa综合国产 | 国产aaaaav久久久一区二区 | 欧美一级片在线观看 | 天堂在线免费视频 | 国产精品18久久久 | 9久9久9久女女女九九九一九 | 国产精品久久久久久 | 午夜视频网 | 亚洲精品18 | 日本污视频 | 久久日韩精品 | 婷婷91| 精品久久久久国产免费第一页 | 国产精品一区二区无线 | 国产精品一区二区欧美黑人喷潮水 | 国产精品国产成人国产三级 | 欧日韩不卡在线视频 | 久久免费国产视频 | 日韩 国产 在线 | 成人性视频免费网站 | 五月天婷婷综合 | 国产三级在线观看播放 | 韩日在线视频 | av免费网址 | 欧美视频一区二区三区 | 影音先锋成人资源 | 午夜在线精品 | 免费a级毛片在线播放 | 国产第一区二区 | 国产激情视频在线免费观看 | 在线精品亚洲欧美日韩国产 | 国产在线精品一区二区 | 成人黄色电影免费 | 久久久av| 午夜天堂精品久久久久 | 一级无毛片 | 一级做a爰片久久毛片 | 激情国产视频 | 日批日韩在线观看 |