函数的定义有两种方式
1. 函数的定义
function hello(name:string,age:number):string{
return name + age;
}
2.函数表达式
type GetFunction = (x:string,y:string) => string;
let getUsername:GetFunction = function(firstName:string,lastName:string):string{
return firstName+lastName;
}
函数的特性
1.可选参数
function print(name:string,age?:number):void{
console.log(name,age)
}
2.默认参数
function ajax(url:string,method:number='Get'):void{
console.log(url,method)
}
ajax('/user'); //user Get
3.剩余参数
function sum(...numbers:number[]){
console.log(numbers); //[ 1, 2, 3, 4 ]
}
sum(1,2,3,4);
函数的重载
在java里,重载指的是两个函数,方法名是一样的,但是参数数量或者类型不一样
在ts里,仅仅指是为一个函数提供多个函数定义
let obj = {name:'pengsitao',age:10};
function attr(val:string):void;
function attr(val:number):void;
//如果没有以上两句attr函数可以接受任何类型的参数,但是加上如上两句,函数只能接受string 和 number类型的参数
function attr(val:any){
if(typeof val === 'string'){
obj.name = val;
}else if(typeof val ==='number'){
obj.age = val;
}
}
attr('kwj');
attr(20);
console.log(obj)