天天看點

TS入門——02.函數TS入門——02.函數

TS入門——02.函數

函數定義

函數就是一組可以執行某種特定功能的代碼段,函數聲明告訴編譯器函數的名稱、傳回類型和參數

函數就是使用了關鍵詞 function把代碼塊包裹在花括号中,如下

// 函數聲明
function fn() {
  console.log('函數執行了')
}
// 函數調用
fn() // 函數執行了
           

大多時候,我們需要通過函數指定傳回值給調用處,在js中我隻需通過關鍵字return即可傳回任意類型的值,但是在ts中我們需要給傳回值指定一個傳回類型,如果沒有傳回值,編譯器預設傳回類型為void,也就是沒有傳回值,是以上面的代碼就等價于:

// 函數聲明
function fn(): void {
  console.log('函數執行了')
}
// 函數調用
fn() // 函數執行了
           

有傳回值的函數如下

// 帶傳回值的函數
function fn1(): string {
  return 'lucky'
}
console.log(fn1()) // lucky
           

我們在調用函數時有時需要給函數内部傳遞某些值,在js中隻需根據相關形參個數傳入實參即可,但在ts中則需要規定傳入參數的資料類型,例:

// 帶參數的函數
function fn(age: number, name: string): string {
  return name + '今年' + age + '歲'
}

console.log(fn(18, 'lucky')) //lucky今年18歲
           

總結ts定義函數的文法有:

通過function關鍵字定義函數

function 函數名(參數1:參數類型,參數2:參數類型,…): 傳回類型 { return 傳回值 }

通過匿名函數的方法定義函數

var 函數名 = function(參數1:參數類型,參數2:參數類型,…): 傳回類型 { return 傳回值 }

通過Function構造函數的方式來定義函數,但是不建議使用

var 函數名 = new Function(‘a’, ‘b’, ‘return a + b’)

函數定義拓展

可選參數

帶可選參數的函數 在參數的後面加入’?’(可選參數必須放在必選參數的後面)

function fn3(a: number, b?: number): number {
  if (b) {
    return a + b
  } else {
    return a
  }
}

console.log(fn3(2, 3)) // 5
console.log(fn3(2)) // 2
           

預設參數

帶預設參數的函數 給參數指派,可以不傳值,可以重新指派

function fn14(name: string, age: number = 18) {
  return name + age + '歲'
}

console.log(fn14('lucky')) // lucky18歲
console.log(fn14('lucky', 22)) // lucky22歲
           

剩餘參數

如果函數不指定參數個數,可以通過擴充運算符來實作傳遞若幹數量的參數

function fn(...arr: number[]): number {
  let sum = 0;
  arr.forEach(value => {
    sum += value
  })
  return sum
}

console.log(fn(1, 2)) // 3
console.log(fn(1, 2, 3)) // 6
console.log(fn(1, 2, 3, 4)) // 10
           

函數重載

定義一個函數名相同,參數的數量或者類型不同的函數就叫做函數的重載,在ts中的函數重載方式案例如下

function overload(name: string): void;
function overload(name: string, age: number): void;
function overload(age: number, name: string): void;

function overload(m: any, n?: any): void {
  console.log(m, n)
};

overload('lucky') // lucky undefined
overload('lucky', 22) // lucky 22
overload(22, 'lucky') // 22 lucky
           

箭頭函數

ts支援es6文法,箭頭函數示例寫法如下

// 箭頭函數
var fn = (x:number): number => {
  return x
}

console.log(fn(1000)) // 1000
           

以上便是本人學習ts函數的基礎知識了,若有不正,謹聽指教

下一篇: Ts的函數

繼續閱讀