TypeScript的函數(方法)
一、函數的定義
1、聲明式
function getInfo(name: string, age: number) : string {
return `I am ${name} and I am ${age} years old`
}
ts在傳參時都會規定參數的類型,還有它返回值的類型也會在函數執行之前都已經規定好,如果傳參的類型和返回值的類型不符合,ts編譯會報錯。
2、匿名函數
const getInfo = function(name: string, age: number):string {
return `I am ${name} and I am ${age} years old`
}
二、函數中的參數
1、默認參數(傳入值會覆蓋默認參數,不傳值也行)
function getinfo(name:string,age:number=20):string{
return `${name}---${age}`
}
console.log(getinfo("張三"));//打印出:張三 20
console.log(getinfo("張三",30));//打印出:張三 30
2、可選參數(可以傳可選的值也可以不用傳,但是可選的參數必須放在參數列表的最后)
function getinfo1(name:string,age?:number):string{
if(age){
return `${name}---${age}`
}else{
return `${name}---年齡保密`
}
}
console.log(getinfo1("張三"));//打印出:張三 年齡保密
console.log(getinfo1("張三",30));//打印出:張三 30
3、剩余參數:利用es6的三點運算符(相當於把參數賦值給一個數組,然后用循環遍歷這個數組)
function sum1(...result:number[]):number{
var sum=0;
for(let i=0;i<result.length;i++){
sum+=result[i];
}
return sum;
}
console.log(sum1(1,2,3,4,5));//15
console.log(sum1(1,2,3,4,5,6));//21
或者(把傳進來的第一個參數賦值給a,后面的放進數組)
function sum1(a:number,...result:number[]):number{
var sum=a;
for(let i=0;i<result.length;i++){
sum+=result[i];
}
return sum;
}
console.log(sum1(1,2,3,4,5));//15
console.log(sum1(1,2,3,4,5,6));//21
三、函數的返回值
1、沒有返回值的函數
function getInfo(name:string, age:number):void{
console.log(`hello${name}`)
}
當函數不需要return返回數據時,這個函數的返回類型就為void(空)
2、推斷類型(ts自動識別類型(按上下文歸類))
function add(x: number, y: number) {
return x + y
}
ts會自動識別出返回類型為number
四、函數的調用
ts的函數調用和普通的函數沒有區別,可以在函數名后面加括號調用,也可以用call,apply,bind來調用
1、call() 和 apply() 是預定義的函數方法。 兩個方法可用於調用函數,兩個方法的第一個參數必須是對象本身。
function myFunction(a, b) {
return a * b;
}
let obj = myFunction.call(obj, 10, 2); // 返回 20
console.log(obj)
function myFunction(a, b) {
return a * b;
}
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray); // 返回 20
兩個方法都使用了對象本身作為第一個參數。 兩者的區別在於第二個參數: apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。
