10函数
# 函数
# 1、函数声明和函数表达式
//函数声明
function fn(x:number,y:number):number{
return x+y
}
fn(1,2)
//函数表达式
let fn = function(x:number,y:number):number{
return x+y
}
fn(1,2)
//注意,函数表达式这种写法只对等号右边的匿名函数进行类型定义,而等号左边的fn是通过赋值操作进行类型推断出来的。如果需要给左边的fn添加类型,需要这样写:
let fn:(x:number,y:number)=>number = function(x:number,y:number):number{
return x+y
}
//在ts中,=>用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型。而es6的=>是箭头函数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2、用接口定义函数的形状
interface Fn{
(x:number,y:number):number;
}
let fn:Fn = function(x:number,y:number){
return x+y
}
fn(1,2)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 3、可选参数
//可选参数必须在必选参数的后面
function fn(x:number,y?:number){
return x+y
}
fn(1)
1
2
3
4
5
6
2
3
4
5
6
//练习
function fn(x:number,y?:number){
if(y){
return x+y
}else{
return x
}
}
console.log(fn(1))
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 4、默认参数
function fn(x:number,y?:number,z:number=1){
return x+z
}
console.log(fn(1))
1
2
3
4
5
2
3
4
5
# 5、剩余参数
//...items本质上是一个数组
function fn(a,...items:any[]){
console.log(a)
console.log(items)
}
fn(1,2)
1
2
3
4
5
6
7
2
3
4
5
6
7
# 6、函数重载
java中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况。typescript中的重载:通过为同一个函数提供多个函数类型定义来试下多种功能的目的。ts为了兼容es5以及es6重载的写法和java中有区别。
function fn(name:string):void;
function fn(age:number):void;
function fn(arg:any):void{
if(typeof arg === "string"){
console.log("字符串")
}
if(typeof arg === "number"){
console.log("数字")
}
}
fn("小明")//字符串
fn(18)//数字
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
编辑 (opens new window)
上次更新: 2023/08/06, 00:38:41