TypeScript可以为函数指定参数类型和返回类型:
function hello(who : string) : string{//"who : string"指定参数who的类型为string, ": string"指定返回值类型为string
return "hello " + who;
}
也可以定义一个匿名函数:
let hello = function(who : string) : string{
return "hello " + who;
}
匿名函数的完整定义如下:
let hello : (who : string) => string = function(who : string) : string{
return "hello " + who;
}
//hello : (who:string) => string,其中"who : string"用于指定参数类型,"=> string"用于指定返回值类型
可以将函数的参数指定为可选参数,方法是在参数后面加上?, 需要说明的一点是可选参数只能放在必填参数的后面:
let hello = function(who : string, greet ?: string) : string{//greet为可选参数,不能定义在必选参数who的前面
if(greet == undefined){//没有传递可选参数,greet的值为undefined
greet = "hello"
}
return greet + " " + who;
}
console.log(hello("world"));//输出hello world
console.log(hello("world", "hi"));//输出hi world
除了可选参数,也可以为参数指定一个默认值,方法是在参数后面加上 "=默认值":
let hello = function(greet = "hello", who = "world") : string{//为参数指定默认值,当没有传递参数,或参数的值为undefined时,将参数的值设定为默认值;带有默认值的参数的位置没有限制
return greet + " " + who;
}
console.log(hello());//没有传递参数,使用默认值,输出hello world
console.log(hello(undefined,"world"));//传递undefined, greet使用默认值,输出hello world
console.log(hello("hi", "god"));//输出hi god
可以为函数定义剩余参数,从而可以传递可变数量的参数,剩余参数会将参数保存在数组中:
let hello = function(greet, ...who : string[]) : string{//指定可选参数的类型为字符串数组, 也可以不指定类型,那么则为any[]
return greet + " " + who;
}
console.log(hello("hi", "world", "god"));//输出hi world,god