深圳網(wǎng)絡(luò)營銷推廣排名百度seo運(yùn)營工作內(nèi)容
在 TypeScript 中,函數(shù)形狀可以用多種方式進(jìn)行定義。下面介紹了幾種常用的函數(shù)形狀定義方式:
-
函數(shù)聲明:
-
function add(a: number, b: number): number {return a + b; }
在函數(shù)聲明中,我們直接使用
function
關(guān)鍵字來聲明函數(shù),并指定參數(shù)的類型和返回值的類型。 -
函數(shù)表達(dá)式:
-
const subtract = function(a: number, b: number): number {return a - b; };
使用函數(shù)表達(dá)式的方式,我們將一個(gè)匿名函數(shù)賦值給一個(gè)變量。在這種情況下,可以通過變量的類型推斷來推導(dǎo)參數(shù)和返回值的類型,當(dāng)然也可以顯式地指定類型。
-
箭頭函數(shù):
-
const multiply = (a: number, b: number): number => a * b;
箭頭函數(shù)是一種更簡潔的函數(shù)表達(dá)式形式,通過箭頭
=>
分隔參數(shù)和函數(shù)體,并且可以省略function
關(guān)鍵字和return
關(guān)鍵字(當(dāng)函數(shù)體只有一條返回語句時(shí))。 -
函數(shù)類型別名:
-
type Calculator = (a: number, b: number) => number;const divide: Calculator = (a, b) => a / b;
我們可以使用類型別名來定義一個(gè)函數(shù)類型,將參數(shù)類型和返回值類型組合在一起。然后可以使用類型別名來聲明具體的函數(shù)。
總結(jié)起來,函數(shù)形狀可以通過函數(shù)聲明、函數(shù)表達(dá)式、箭頭函數(shù)和函數(shù)類型別名等方式進(jìn)行定義。每種方式都有其自身的特點(diǎn)和適用場景,選擇合適的方式取決于具體的需求和編碼風(fēng)格。
infer
是 TypeScript 中的一個(gè)關(guān)鍵字,它用于從類型中推斷(infer)出其他類型。
在條件類型(Conditional Types)中,我們可以使用 infer
來引入一個(gè)類型參數(shù),并根據(jù)條件對該類型參數(shù)進(jìn)行推斷。具體來說,infer
用于提取并推斷出某個(gè)表達(dá)式中的類型,并將其作為新的類型參數(shù)使用。
下面是一個(gè)示例,展示了 infer
的使用:
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;function add(a: number, b: number): number {return a + b;
}type AddReturnType = ReturnType<typeof add>; // 推斷出 add 函數(shù)的返回值類型console.log(typeof add); // function
console.log(typeof AddReturnType); // number
在上述示例中,我們定義了一個(gè) ReturnType<T>
類型,它接受一個(gè)泛型參數(shù) T
,表示函數(shù)類型。通過使用條件類型和 infer R
,我們在條件中判斷 T
是否滿足函數(shù)類型的要求。如果滿足條件,那么 R
將被推斷為函數(shù)的返回值類型。最終,ReturnType<T>
類型將被定義為函數(shù)的返回值類型。
通過調(diào)用 typeof
運(yùn)算符,我們可以看到 add
的類型為 function
,而 AddReturnType
的類型為 number
,這是因?yàn)?ReturnType<typeof add>
推斷出了 add
函數(shù)的返回值類型。
總結(jié)起來,infer
關(guān)鍵字在 TypeScript 中用于從類型中推斷出其他類型,主要用于條件類型中。它允許我們在條件類型中提取和使用表達(dá)式中的類型,并將其作為新的類型參數(shù)