## 函數聲明法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)