欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

TypeScript 獲取函數(shù)的參數(shù)類型、返回值類型及定義返回函數(shù)類型

 更新時(shí)間:2024年02月15日 08:57:55   作者:ZHWenDong  
這篇文章主要介紹了TypeScript 獲取函數(shù)的參數(shù)類型、返回值類型及定義返回函數(shù)類型,需要的朋友可以參考下

事例:

function test(lzwme: string, idx: number) {
  return {
    lzwme,
    idx,
  };
}

1 獲取函數(shù)的參數(shù)類型

使用預(yù)定義的 Parameters 可以獲取到一個(gè)函數(shù)的參數(shù)類型列表。
獲取 test 函數(shù)的參數(shù)類型:

type TestArgsType = Parameters<typeof test>;
// TestArgsType => [lzwme: string, idx: number]

獲取 idx 參數(shù)的類型:

type TestArgsType = Parameters<typeof test>[1];
// TestArgsType => idx: number

我們看一下 Parameters 的定義:

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

我們可以看到,其實(shí)它主要是通過 infer P 獲取到 T 的參數(shù)類型列表 P 并返回,如果 T 不是函數(shù)則返回 never。

2 獲取函數(shù)的返回值類型

使用預(yù)定義的 ReturnType 可以獲取到一個(gè)函數(shù)的參數(shù)類型列表。

獲取 test 函數(shù)的返回值類型:

type TestReturnType = ReturnType<typeof test>;

我們?cè)倏匆幌?nbsp;ReturnType 的定義:

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

與 Parameters 十分類似,不同的是通過 infer R 獲取并返回 T 的返回值類型。

TypeScript定義返回函數(shù)類型

一般函數(shù)聲明:

//第一種形式
let c: Function;
c = function(): void {
console.log('It work');
}

//第二種形式
function test(): Function{
return function():void{
console.log('it work');
}
}

let a:Function = test();
a();

//第三種形式,箭頭函數(shù)
let d: (para: string) => string;
d = function(param: string): string {
return param;
}

//第四種形式,類型別名,箭頭函數(shù)
type e = (para: string) => string;
const f:e = function(pass: string): string{

return pass;

}

//第五種形式,接口
interface g{
(para: string): string;
}
const h: g = function(pass: string): string{
return pass;
}

箭頭函數(shù):

其實(shí)這里只是涉及一個(gè)簡(jiǎn)單的聲明定義而已。

正如:

let myAdd: (x:number, y:number) => number =
function(x: number, y: number): number { return x + y; };

只是一個(gè)函數(shù)類型聲明(或匿名函數(shù)),如果我們用一個(gè)簡(jiǎn)單的變量聲明定義,那其完整格式如下:

let x: number = 10;

其上的 number 部分相當(dāng)于開頭的 (x:number, y:number) => number,這一部分即是類型(或函數(shù)類型),只是一種定義;哪怕你使用:

let myAdd: (aaaaaaaaaaaaaaaaaaaaaa:number, bbbbbbbbbbbbbbbbbbbbbbbb:number) => number =
function(x: number, y: number): number { return x + y; };

也是可以的。

同樣,一個(gè)變量的聲明定義也可以是這樣:

let x = 10;

這一點(diǎn)自然是歸咎于TS自動(dòng)推導(dǎo)能力了。因此,如上也可以簡(jiǎn)化成:

const myAdd = (x: number, y: number) =&gt; x + y;

= 的前部分一樣省略了,交由ts自動(dòng)推導(dǎo);而后,就是一個(gè)實(shí)際的匿名函數(shù)寫法了。

以上就是TypeScript 獲取函數(shù)的參數(shù)類型、返回值類型及定義返回函數(shù)類型的詳細(xì)內(nèi)容,更多關(guān)于TypeScript 獲取函數(shù)的參數(shù)類型、返回值類型及定義返回函數(shù)類型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論