1.在javascript
中函数有函数声明和函数表达式两种
2.typescript
函数在javascript
函数基础上,为函数增加了参数和返回值的数据类型
typescript
函数1.为声明式函数增加类型
function sum(x:number,y:number):number{
return x + y;
}
2.为函数表达式增加类型
const sum = function(x:number,y:number):number{
return x + y
}
const sum = (x:number, y:number):number => x + y;
typescript
函数类型1.除了直接在函数上增加类型,我们可以直接定义一个函数类型,换句话说,函数在typescript
也是一种类型
2.定义函数类型方式一
type sumFn = (x:number,y:number) => number //使用type别名
const sum:sumFn= (x:number,y:number)=> x + y
3.使用接口定义函数类型
interface SumFn {
(x:number,y:number):number
}
const sum:SumFn = (x:number,y:number) => x + y
1.可以为函数参数设置默认值,注意可选参数不能设置默认值
function sum(x:number = 1,y:number):number{
return x + y;
}
2.在使用函数时,多参数和少参数都是不允许的,可以为函数设置可选参数,注意可选参数一定要放最后
function sum(x:number = 1,y?:number):number{
return x + y;
}
3.在typescript
中剩余参数...rest
也可使用,且是数组类型
function sum(x:number = 1,y?:number,...rest:any:[]):number{
return x + y;
}
1.函数重载,就是可以多次声明一个同名函数,但是它们的参数类型不同或者参数个数不同。这样在调用时,可以根据传入参数类型的不同,参数个数的不同,来确定执行的到底是哪一个函数。
2.typescript
的函数重载是一种伪重载,只可以通过传入的参数类型不同,来决定返回什么类型,逻辑处理也只能在函数实现时处理判断
3.函数重载的实现方式:通过 function
关键字声明重载的类型,最后写函数的实现。
function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: number | string): number | string | void {
if (typeof x === 'number') {
return Number(x.toString().split('').reverse().join(''));
} else if (typeof x === 'string') {
return x.split('').reverse().join('');
}
}
4.注意,函数重载和函数实现必须写在一块,中间不能插入其他语句
1.在 TypeScript
的函数参数声明中,可选参数不能有默认值,有默认值的不能是可选参数
2.定义typescript
函数时,参数一定要设置类型,否则会被认为是any
且报错,如何确实不确定是什么类型,那么也要显示的把any
标注上去