TypeScript學(xué)習(xí)手冊(cè):
https://www.tslang.cn/docs/handbook/basic-types.html
一:定義函數(shù)的方法
1:一般函數(shù)定義的方法(es5)
//函數(shù)聲明法
function run(){
return 'run';
}
//匿名函數(shù)
var run2=function(){
return 'run2';
}
2:ts里面定義函數(shù)的方法
函數(shù)聲明法
//傳遞參數(shù)和返回值都要進(jìn)行指定類(lèi)型
//返回類(lèi)型必須是string類(lèi)型,不能寫(xiě)成別的數(shù)據(jù)類(lèi)型咙好,否則會(huì)報(bào)錯(cuò)
function run():string{
return '123';
}
run();
console.log(run())
匿名函數(shù)的寫(xiě)法
var run2=function():string{//指定返回值類(lèi)型為string字符串類(lèi)型
return '1243';
}
run2(); //調(diào)用方法
console.log(run2())
或者指定返回值類(lèi)型為number類(lèi)型
var run2=function():number{//指定返回值類(lèi)型為number類(lèi)型
return 234;
}
run2();//調(diào)用方法
console.log(run2())
注意:
//沒(méi)有參數(shù)返回的時(shí)候,要定義返回的數(shù)據(jù)類(lèi)型
var fun2=function():number{
return 123;
}
alert(fun2());
3:ts定義方法傳參洪囤,參數(shù)是有類(lèi)型的
//聲明式
function getInfo(name:string,age:number):string{
return `${name} --- ${age}`;
}
console.log(getInfo('zhang',23));
//匿名式定義法
var getInfo = function(name:string,age:number):string{
return `${name} --- ${age}`;
}
console.log(getInfo('zhang',23));
//沒(méi)有返回值的方法颊乘,void表示沒(méi)有返回值
function run():void{
console.log('runnn')
}
run();
二:函數(shù)方法可選參數(shù)
es5里面方法的實(shí)參和形參可以不一樣色查,但是ts中必須一樣掸茅,如果不一樣,必須配置可選參數(shù)藕咏。
方法可選參數(shù)役耕,用問(wèn)號(hào)表示缩赛,注意:可選參數(shù)必須配置到最后一個(gè)位置锌历。
function getInfo(name:string,age?:number):string{
if(age){
return `${name} --- ${age}`;
}else{
return `${name} ---年齡保密}`;
}
}
console.log(getInfo('zhang'));
console.log(getInfo('zhang' ,2345));
//如果調(diào)用函數(shù)的時(shí)候,不傳第二個(gè)參數(shù)峦筒,則要在第二個(gè)函數(shù)age?上加一個(gè)問(wèn)號(hào)究西。
//問(wèn)號(hào)就表示這個(gè)age可以傳,可以不傳物喷。
三:函數(shù)方法默認(rèn)參數(shù)
es5里面沒(méi)有辦法設(shè)置默認(rèn)參數(shù)卤材,es6和ts中都可以設(shè)置默認(rèn)參數(shù),如果沒(méi)有傳年齡的參數(shù)峦失,則默認(rèn)為number=20扇丛,如果傳參數(shù),就是傳的那個(gè)年齡的參數(shù)尉辑,和上面的可選參數(shù)是類(lèi)似的帆精。
位置可以放在第一個(gè)參數(shù),也可以放在最后一個(gè)參數(shù)的位置隧魄。
function getInfo(name:string,age:number=20):string{
if(age){
return `${name} --- ${age}`;
}else{
return `${name} ---年齡保密}`;
}
}
console.log(getInfo('zhang'));
console.log(getInfo('zhang' ,23));
四:函數(shù)方法剩余參數(shù)
求和:
function sum(a:number,b:number,c:number,d:number){
return a+b+c+d
}
sum (1,2,3,4);
console.log(sum (1,2,3,4,));
同理:求積
function sum(a:number,b:number,c:number,d:number){
return a*b*c*d
}
sum (1,2,3,4);
console.log(sum (1,2,3,4,));
三點(diǎn)運(yùn)算符卓练,接收形參傳過(guò)來(lái)的值(剩余參數(shù))(把sum里面所有傳過(guò)來(lái)的參數(shù)全部賦值給result數(shù)組)
//三點(diǎn)運(yùn)算符,接收形參傳過(guò)來(lái)的值购啄,
function sum(...result:number[]):number{
var sum=0;
//遍歷result襟企,拿到值
for(var i=0;i<result.length;i++){
sum+=result[i]
}
return sum;
}
sum (1,2,3,4,3);
console.log(sum (1,2,3,4,3));
另一種寫(xiě)法,把1賦給a狮含,2賦給b顽悼,后面三個(gè)數(shù)賦給...result
//另一種寫(xiě)法
function sum(a:number,b:number,...result:number[]):number{
//把1賦值給a,把2賦值給b,把后面三個(gè)數(shù)賦值給三點(diǎn)運(yùn)算符
var sum=a+b;
for(var i=0;i<result.length;i++){
sum+=result[i]
}
return sum;
}
sum (1,2,3,4,3);
console.log(sum (1,2,3,4,3));
五:TypeScript的函數(shù)重載
實(shí)現(xiàn)java里面的面向?qū)ο蟮囊环N編程的體驗(yàn),ts為了兼容es5和es6重載的寫(xiě)法和Java中式有一定的區(qū)別的几迄。
// ts重載蔚龙,通過(guò)為同一個(gè)函數(shù)提供多個(gè)函數(shù)類(lèi)型定義來(lái)實(shí)現(xiàn)多種功能的目的
//重載就相當(dāng)于同名的函數(shù),當(dāng)es5中出現(xiàn)同名方法映胁,下面的會(huì)替換上面的方法
function css(config){
}
function css(config,value){ }
TypeScript的重載木羹,分別返回了字符串(王小婷)和number類(lèi)型(20)
function getInfo(name:string):string;
function getInfo(age:number):number;
function getInfo(str:any):any{
if(typeof str==='string'){
return '我叫:'+str;
}else{
return '我年齡:' +str;
}
}
console.log(getInfo('王小婷'));
console.log(getInfo(20));