es5定义函数的方法
// 函数声明
function fun(){
return 'fun';
}
// 匿名函数
let fun2 = function(){
return 'fun2'
}
ts中定义函数的方法
// 函数声明
function fun(): string {
//string代表函数返回的数据的类型时string,如果不一致会报错
return 'fun';
}
//没有返回值的方法
function noReturn(): void {
}
// 匿名函数
let fun2 = function(): number {
return 123;
}
//调用方法
fun2();
ts中定义方法传参
es5中形参和实参可以不一致,但是ts中必须一样,如果不一样需要配置可选参数
//可选参数:参数后面加上问号,可传可不传(可选参数必须配置在最后面)
function fun(name:string,age?:number): string {
if(age){
return `${name}---${age}`;
}else {
return `${name}`;
}
}
console.log(fun('张三',30));
//默认参数:有默认参数,调用的时候可以不传这个值
let fun2 = function(name:string,age:number=20): number {
return `${name}---${age}`;
}
fun2('李四')
//剩余参数
function sum(a:number,b:number,c:number,d:number): number{
return a+b+c+d;
}
sum(1,2,3,4);
function sum(a:number,...result:number[]): number{
let sum = a;
result.forEach(item:number => {
sum += item;
})
return sum;
}
sum(1,2,3,4);
函数重载
ts中的重载,通过同一个函数提供多个函数类型定义来实现多种功能
// es5中同名方法下面的会替换上面的方法
function css(config){
}
function css(config,value){
}
ts中的重载--参数一样
function info(label:string):string;
function info(value:number):string;
function info(config:any):any{
if(typeof config === 'string'){
return `name + ${config}`;
}else {
return `age + ${config}`;
}
}
info('张三');
info(42);
info(true);//错误写法,编译报错
ts中的重载--参数不一样
function info(label:string):string;
function info(label:string,value:number):string;
function info(label:any,value?:any):any{
if(value){
return `name + ${config}`;
}else {
return `age + ${config}`;
}
}
info('张三');
info(42);//错误写法
info('张三',true);//错误写法