ts 函数声明及泛型函数
生活随笔
收集整理的這篇文章主要介紹了
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類型變量代表的是任意類型,所以使用這個函數的人可能傳入的是個數字,而數字是沒有 .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 函数声明及泛型函数的全部內容,希望文章能夠幫你解決所遇到的問題。