日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ts 函数声明及泛型函数

發布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ts 函数声明及泛型函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數聲明

函數聲明對參數類型, 返回值類型定義,沒有返回值定義為void

//必傳x,y并且類型都為number,返回值為布爾 function fun1(x:number,y:number):boolean{return x>y } fun1(1,3)

沒有返回值定義為void:

//不返回值,類型為void function fun1(x:number,y:number):void{console.log(x,y) }

參數可傳可不傳 并添加默認值:

//x必傳,y為可傳可不傳 默認值為1; 返回值為數組類型,數組的每個值為number function fun1(x:number,y:number=1):number[]{return [x,y] } fun1(2) //報錯,返回的x.length一定是定義的所有類型計劃都滿足有length方法的,但是number沒有length。 function fun1(x:string|number):number{return x.length }

泛型函數

軟件工程中,我們不僅要創建一致的定義良好的API,同時也要考慮可重用性。組件不僅能夠支持當前的數據類型,同時也能支持未來的數據類型,這在創建大型系統時為你提供了十分靈活的功能。

可以使用泛型來創建可重用的組件,一個組件可以支持多種類型的數據。 這樣用戶就可以以自己的數據類型來使用組件。

  • 泛型是指在定義函數,接口,類的時候,不預先指定具體的類型,而在使用的時候指定類型的一種特性。

  • 泛型<T> T類型變量,表示任何類型。幫助我們捕獲用戶傳入的類型(比如:number)

  • 傳入泛型用 <number>,尖括號括起來的

  • 創建泛型函數時,編譯器要求你在函數體必須正確的使用這個通用的類型

//添加類型變量T,T幫助我們捕獲用戶傳入的類型(比如:number) //參數類型為T,返回值類型為T function fun1<T>(x: T): T {return x; } //這里傳入T為string類型 fun1<string>('a')

創建泛型函數時,編譯器要求你在函數體必須正確的使用這個通用的類型:

//報錯 因為T類型變量代表的是任意類型,所以使用這個函數的人可能傳入的是個數字,而數字是沒有 .length屬性的。 function fun5<T>(x: T): T {return x.length; }

可傳入多個類型變量:

function fun1<T, W>(x: T,y:W): W {return y } fun1<string, boolean>('1',false)

泛型約束

泛型約束可以通過(interface)接口+extends來實現約束。

interface Len{length: number } //T繼承接口Len,代表實參必須有length這個屬性才可以 funtion fun<T extends Len>(args:T):T{return args.length } fun("abc") // 3 字符串是有length屬性的 fun({})//報錯,因為對象本身沒有length屬性 fun({length:5}) //不報錯 fun(4)//報錯,number數據沒有length屬性 fun(null)//報錯

總結

以上是生活随笔為你收集整理的ts 函数声明及泛型函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。