本篇博客主要总结一下在Typescript
中的函数写法,以及函数类型的总结。
如果在一个函数中,需要传入一个函数作为参数,可以如下所示,进行声明定义。
我们也可以通过type来定义函数类型
如上述代码所示,( num1:number, num2: number ) => void
就表示函数类型,并且此时需要传入两个参数,并且两个都是number
类型,返回值也为number
类型。在一些语言中num1
和num2
是可以不传的,但是在typescript
中是不行的。
如果不传,则代码为(number, number) => void
,表示为两个参数都是number(此时会报错,因为形参重复)
,并且两个参数的类型均为any
类型。
如上图所示,此时我们在第二个参数y
使用?
表示其为可选类型,此时表示y
的参数的值可以为number
类型,也可以是undefined
类型。此时我们需要注意的是:可选类型参数需要在必须类型的后面。
此时如果在可选参数的后面,就会报错。
如上图所示,此时我们可以给函数参数设置一个默认值,也就是直接在后面加上=
赋值即可,当函数没有传入值,或者传入的是undefined
值时,就会使用默认值类型。当我们传入null
时,就会发生报错。
和js
中一样,ts
中也存在剩余参数,我们可以使用...
来收集参数。下面是一个求和的例子。
在ts中的this指向也是和在js中是一致的,关于在js
中的this指向问题
可以查看js中的this详解。
不确定的this指向
如上图所示,此时代码会报错,虽然说我们将该函数通过info
对象来调用,但是,该函数处于外部环境,很有可能被其他对象所调用,如果其他对象不存在name
属性,此时就会报错。所以ts
为了安全,直接在info执行的时候报错
。所以一般我们在一个函数中使用到this的话,应该在函数中指定this的类型
如上述代码所示,我们通过给sayHello
指定this
的类型为{name:string}
,就可以调用了。
如图所示,如果不存在name
属性,则直接就会报错。ts也支持显示绑定
ts支持隐式绑定
我们首先先看一个例子
如上图所示我们指定paramsType
类型为number类型或者string类型
,但是当我们返回值时,显示操作符不能作用域paramsType
类型的数据。
可以使用如上代码解决:但是存在两个问题:1、需要写的一些逻辑判断
2、函数返回值无法确定类型
此时我们可以使用函数的重载
。
一般我们需要编写两个或者两个以上的重载签名,然后再编写重载函数来实现。
在重载中实现函数是不能被调用的
联合类型和重载函数小案例
我们想要实现传入一个数组或者一个字符串,此时可以返回数组或者字符串的长度。联合类型实现:
重载实现
两者比较的话,我们发现使用联合类型
较为简单一些,如果能够使用联合类型
来解决的话,可以使用联合类型解决
,如果不能,比如说返回值类型不同,我们可以使用重载来解决
。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/123152245
内容来源于网络,如有侵权,请联系作者删除!