日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用更具可讀性的方式來設(shè)置TypeScript類型

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

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計與策劃設(shè)計,上林網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:上林等地區(qū)。上林做網(wǎng)站價格咨詢:18982081108

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

TypeScript 泛型

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

 
 
 
 
  1. type MyString = string;
  2. 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 = (arg: T): T => arg;

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

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

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

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

Partial

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

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

Required

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

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

Readonly

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

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

Pick

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

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

Parameters

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

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

Omit

Omit和Pick相反(去除屬性).

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

Record

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

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

如果所有類型都具有相同的值,則聲明的 Record 版本會更加簡潔和可讀,因為它們都具有相同的類型。

Extract

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

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

Exclude

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

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

NonNullable

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

 
 
 
 
  1. type T0 = NonNullable;
  2.      // type T0 = string | number
  3. type T1 = NonNullable;
  4.      // type T1 = string[]

ReturnType

ReturnType- 獲取函數(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>;
  8.      
  9. type T2 = unknown
  10. type T3 = ReturnType<() => T>;
  11.      
  12. type T3 = number[]
  13. type T5 = ReturnType;
  14.      
  15. type T5 = any
  16. type T6 = ReturnType;
  17.      
  18. type T6 = never
  19. type T7 = ReturnType;

InstanceType

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

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

~完,我是小智。

更多實用類別,請自行看官網(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)系大遷世界公眾號。


當(dāng)前名稱:使用更具可讀性的方式來設(shè)置TypeScript類型
當(dāng)前地址:http://m.5511xx.com/article/dhhschi.html