最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TypeScript中infer關鍵字的具體使用

 更新時間:2025年06月04日 10:45:01   作者:aiguangyuan  
infer 是 TypeScript 中的高級類型關鍵字,主要用于條件類型中推斷類型,本文就來介紹TypeScript中infer關鍵字的使用,具有一定的參考價值,感興趣的可以了解一下

infer 是 TypeScript 中的高級類型關鍵字,主要用于條件類型中推斷類型。它允許我們在條件類型的 extends 子句中聲明一個類型變量,然后在該條件類型的 true 分支中使用這個推斷出的類型。

1. 基本語法

type SomeType<T> = T extends infer U ? U : never;

2. 主要用途

1. 從復雜類型中提取子類型;

2. 實現(xiàn)類型解構;

3. 創(chuàng)建更靈活的工具類型;

3. 常見示例

3.1. 提取函數(shù)返回類型

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

function foo(): number {
  return 42;
}

type FooReturn = ReturnType<typeof foo>; // number

3.2. 提取數(shù)組/元組元素類型

type ElementType<T> = T extends (infer U)[] ? U : never;

type StrArray = string[];
type StrElement = ElementType<StrArray>; // string

3.3. 提取數(shù)組/元組元素類型

type UnpackPromise<T> = T extends Promise<infer U> ? U : T;

type PromiseNumber = Promise<number>;
type NumberType = UnpackPromise<PromiseNumber>; // number

3.4. 提取函數(shù)參數(shù)類型

type Parameters<T> = T extends (...args: infer P) => any ? P : never;

function bar(a: string, b: number): void {}
type BarParams = Parameters<typeof bar>; // [string, number]

3.5. 提取構造函數(shù)實例類型

type InstanceType<T> = T extends new (...args: any[]) => infer R ? R : any;

class MyClass {}
type MyInstance = InstanceType<typeof MyClass>; // MyClass

3.6. 實現(xiàn)類型反轉(將元組類型順序反轉)

type Reverse<T> = T extends [infer First, ...infer Rest] 
  ? [...Reverse<Rest>, First] 
  : T;

type Original = [1, 2, 3];
type Reversed = Reverse<Original>; // [3, 2, 1]

4. 注意事項

1. infer 只能在條件類型的 extends 子句中使用;

2. 同一類型變量可以在多個位置進行 infer,但必須推斷出相同的類型;

3. 如果無法推斷出類型,則條件類型會返回 never 或指定的默認類型;

infer 是 TypeScript 類型編程中非常強大的工具,它使得類型操作更加靈活和強大,特別是在創(chuàng)建復雜工具類型時非常有用。

到此這篇關于TypeScript中infer關鍵字的具體使用的文章就介紹到這了,更多相關TypeScript infer關鍵字使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript中分號的一些細節(jié)

    JavaScript中分號的一些細節(jié)

    這篇文章主要給大家介紹了關于JavaScript中分號的一些細節(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • JavaScript中EventLoop介紹

    JavaScript中EventLoop介紹

    本篇文章給大家詳細介紹了JavaScript中EventLoop的相關知識,有這方面需要的朋友參考學習下。
    2018-01-01
  • layui table表格數(shù)據(jù)的新增,修改,刪除,查詢,雙擊獲取行數(shù)據(jù)方式

    layui table表格數(shù)據(jù)的新增,修改,刪除,查詢,雙擊獲取行數(shù)據(jù)方式

    今天小編就為大家分享一篇layui table表格數(shù)據(jù)的新增,修改,刪除,查詢,雙擊獲取行數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • ECharts事件處理與旭日圖實現(xiàn)

    ECharts事件處理與旭日圖實現(xiàn)

    這篇文章介紹了ECharts事件處理與實現(xiàn)旭日圖的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • JS簡易計算器實例講解

    JS簡易計算器實例講解

    這篇文章主要為大家詳細介紹了JS簡易計算器實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • js和jquery如何獲取圖片真實的寬度和高度

    js和jquery如何獲取圖片真實的寬度和高度

    按照插入的圖片的尺寸來判斷圖片是橫圖還是豎圖。然后判斷過后給予不同的展示方式,下面為大家介紹下js和jquery如何獲取圖片真實的寬度和高度
    2014-09-09
  • 微信公眾平臺API錯誤代碼41002的問題解決辦法

    微信公眾平臺API錯誤代碼41002的問題解決辦法

    今天在研究微信公眾號接口問題,下面這篇文章主要給大家介紹了關于微信公眾平臺API錯誤代碼41002問題的解決辦法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • 微信小程序?qū)崿F(xiàn)Timeline時間線效果

    微信小程序?qū)崿F(xiàn)Timeline時間線效果

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)Timeline時間線效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 非html5實現(xiàn)js版彈球游戲示例代碼

    非html5實現(xiàn)js版彈球游戲示例代碼

    彈球游戲,一般都是使用html5來實現(xiàn)的,其實不然,使用js也可以實現(xiàn)類似的效果,下面有個不錯的示例,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-09-09
  • Ajax與服務器(JSON)通信實例代碼

    Ajax與服務器(JSON)通信實例代碼

    這篇文章主要介紹了Ajax與服務器(JSON)通信實例代碼的相關資料,并附實例代碼,幫助大家學習理解此部分知識,需要的朋友可以參考下
    2016-11-11

最新評論

梧州市| 南雄市| 玉环县| 日喀则市| 浙江省| 饶河县| 西青区| 黄陵县| 东兰县| 桃江县| 扶余县| 白玉县| 东宁县| 塔城市| 永新县| 吴忠市| 平武县| 乌兰浩特市| 扎赉特旗| 堆龙德庆县| 松原市| 武宣县| 称多县| 翼城县| 获嘉县| 盐源县| 竹北市| 鹰潭市| 德惠市| 漳州市| 罗山县| 洛南县| 华池县| 启东市| 垫江县| 若尔盖县| 凤冈县| 鲁甸县| 龙里县| 武宣县| 武胜县|