TypeScript徹底解讀(26課時)_5.TypeScript徹底解讀-函數

5.TypeScript徹底解讀-函數

新建function.ts。而後在index.ts內引用es6

給函數定義參數類型:上面是es5的寫法 下面是ts6的寫法數組

一個完整的函數類型。括號 箭頭 number瀏覽器

如今給add賦值一個函數app

若是參數傳的是string那麼就會報錯了,類型不兼容函數

全局定義的arg3是不須要定義在函數裏的學習

接口定義函數類型,講接口的時候已經學習過了這裏再來看一下es5

tslint推薦咱們使用類型別名,一保存文件就變成了這種形式prototype

也能夠這麼去定義,此時isString類型就等同於string類型3d

指定了AddFunce是add 這個類型,而後就能夠給他賦值一個函數對象

函數的參數

首先是可選參數

這種形式是類型別名的形式

參數是可選的,只要在參數後面加一個問號就能夠了。在js中可選參數是能夠在任何地方的,只要用undefined佔位就能夠了

ts中可選參數必須在必選參數後面才能夠

 

加上第三個參數的狀況

默認參數

在瀏覽器中用es5的寫法寫一個函數,默認參數的形式

第二參數傳0或者undefined的結果都是2

參數等於一個值,這是在es6中的語法,es6中沒有類型

在ts中的默認參數,ts中有類型,就能夠這麼寫,給y設置的默認值是3

默認值能夠省略y的類型,ts會根據咱們後面設置的3來判斷這是個什麼類型的參數

若是這裏傳字符串就會報錯,ts已經推算出來y是number類型的

剩餘參數

函數能夠有任意多的參數

在es6以前的寫法

arguments是一個類數組對象,handleData這裏咱們不寫參數,在方法裏面用arguments.lenth來判斷參數的數量

array.join(',')數組有這個join方法,可是arguments是一個類數組它沒有,因此咱們須要用一個巧妙的方式來轉換一下

Array.prototype.slice.apply(arguments)。 這樣arguments就會轉換成一個數組

多個參數返回拼接的結果如下劃線拼接

es6出現以後,...三個點的操做符

...args能夠去拆解一些數組和對象

...就是把數組拆開了放到arr2裏面了。

 

還能夠支持對象

obj2也擁有ob1裏面全部的屬性

在ts中

制定...args來接收後面全部的參數,它是一個數組,因此執行參數類型就是number[]

重載

這兩個就是函數重載

 

第三個定義實際的函數

這裏咱們調用傳入字符串

傳入字符串和數值,兩種不一樣的返回結果

這就是函數的重載。根據咱們傳入的不一樣的函數的類型和個數參數,返回不一樣類型

傳入字符串,返回的是字符串的數組,再循環這個數組,直接調用toFixed方法就會報錯了。由於參數是字符串類型的,不是數字

傳入的123是數值類型,這裏調用length也是不對的,只有字符串或者子數組纔有length這個屬性

 

以上就是函數重載。

前兩個是函數重載。

第三個是函數實體,它不是重載的一部分

函數重載只能使用function來定義

 

結束

相關文章
相關標籤/搜索