## 函数声明法css
// function run():string{ // return 'run'; // } //错误写法,返回类型错误 // function run():string{ // return 123; // }
// var fun2=function():number{ // return 123; // } // alert(fun2()); /*调用方法*/
/* function getInfo(name:string,age:number):string{ return `${name} --- ${age}`; } alert(getInfo('zhangsan',20)); */ //匿名方法 var getInfo=function(name:string,age:number):string{ return `${name} --- ${age}`; } alert(getInfo('zhangsan',40)); //没有返回值的方法 function run():void{ console.log('run') } run();
es5里面方法的实参和行参能够不同,可是ts中必须同样,若是不同就须要配置可选参数java
function getInfo(name:string,age?:number):string{ if(age){ return `${name} --- ${age}`; }else{ return `${name} ---年龄保密`; } } alert(getInfo('zhangsan')) alert(getInfo('zhangsan',123))
es5里面无法设置默认参数,es6和ts中均可以设置默认参数es6
function getInfo(name:string,age:number=20):string{ if(age){ return `${name} --- ${age}`; }else{ return `${name} ---年龄保密`; } }
/* function sum(...result:number[]):number{ var sum=0; for(var i=0;i<result.length;i++){ sum+=result[i]; } return sum; } alert(sum(1,2,3,4,5,6)) ; */ //剩余参数(三点运算符)必须在最后 function sum(a:number,b:number,...result:number[]):number{ var sum=a+b; for(var i=0;i<result.length;i++){ sum+=result[i]; } return sum; } alert(sum(1,2,3,4,5,6)) ;
ts为了兼容es5 以及 es6 重载的写法和java中有区别。typescript
//es5中出现同名方法,下面的会替换上面的方法 /* function css(config){ } function css(config,value){ } */
es5出现同名方法会覆盖前面,下面看ts中的重载
示例1:函数
function getInfo(name:string):string; function getInfo(age:number):string; function getInfo(str:any):any{ if(typeof str==='string'){ return '我叫:'+str; }else{ return '个人年龄是'+str; } } alert(getInfo('张三')); //正确 alert(getInfo(20)); //正确 alert(getInfo(true)); //错误写法
示例2:this
function getInfo(name:string):string; function getInfo(name:string,age:number):string; function getInfo(name:any,age?:any):any{ if(age){ return '我叫:'+name+'个人年龄是'+age; }else{ return '我叫:'+name; } } // alert(getInfo('zhangsan')); /*正确*/ // alert(getInfo(123)); 错误 // alert(getInfo('zhangsan',20));
注意:this指向的问题 箭头函数里面的this指向上下文es5
//es5 // setTimeout(function(){ // alert('run') // },1000) setTimeout(()=>{ alert('run') },1000)