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来定义

 

结束

相关文章
相关标签/搜索