typescript-函数(六)

函数

    • 函数类型
      • 为函数定义类型
      • 完整的函数类型
      • 使用接口定义函数类型
      • 使用类型别名
    • 参数
      • 可选参数
      • 默认参数
      • 剩余参数
    • 重载

函数类型

为函数定义类型

let add: (x: number,y: number) => number

完整的函数类型

let add: (x: number,y: number) => number
add = (arg1: number,arg2: number): number => arg1 + arg2
add = (arg1: number,arg2: number) => arg1 + arg2

使用接口定义函数类型

/**
*接口中,只有唯一函数的时候
*interface Add = (x: number,y: number) => number
*/

interface Add {
  (x: number,y: number): number
}

使用类型别名

interface Add = (x:number, y: number) => number
let addFunc: Add
addFunc = (arg1: number,arg2: number) => arg1 + arg2

参数

可选参数

type AddFunction = (arg1: number,arg2: number,arg3?: number) => number
let addFunction: AddFunction
addFunction = (x: number,y: number) => x + y
addFunction = (x: number,y: number,z: number = 0) => x + y + z

console.log(addFunction(1,15,23))// 39

默认参数

let addfunction = (x: number, y: number = 0) => x + y
console.log(addfunction(12))// 12

剩余参数

const handleData = (arg1: number,...args: number[]) => {
  let arr: number[]
  arr = [5]
  arr.push(arg1,...args)
  return arr
}

console.log(handleData(18,12,15))

重载

  • 函数重载只能使用function定义
function handleData(x: string): string[]
function handleData(x: number): number[]
function handleData(x: any): any {
  if(typeof x === 'string'){
    return x.split('')
  }else {
    return x.toString().split('').map((item: any) => Number(item))
  }
}

console.log(handleData('abc'))
console.log(handleData(123))

你可能感兴趣的:(typescript,typescript,前端)