4.ts中函数定义与接口介绍

// ts中定义函数方式一
function sum (x: number, y: number): number {
  return x + y
}

-------------------------------------------------------------------------
// ts中定义函数方式二
let sum2 = function (x: number, y: number): number {
  return x + y
}

// 其中: number是定义了函数的返回值
-------------------------------------------------------------------------
// ts中定义函数的方式三,也就是方式二的详细写法
let sum3: (x: number, y: number) => number = function (x: number, y: number): number {
  return x + y
}


// 注意:其中(x: number, y: number) => number表示的并不是平时js里的箭头函数,而是用来定义sum3是一个返回值为number类型的函数

-------------------------------------------------------------------------
// ts定义函数方式四: 函数接口
// interface关键字表示使用接口方式定义函数,注意这里的函数只是定义,并不实现
interface SearchFunc {
  (source: string, subString: string): boolean
}
// 实现在接口中定义的函数
let mySearch: SearchFunc = function (source: string, subString: string) {
  return source.search(subString) !== -1
}

-------------------------------------------------------------------------
// 函数中传递可选参数
function fullName (firstName: string, lastName?: string) {
  console.log(firstName)
  console.log(lastName)
}
// 注意上面第二个参数后面使用了一个'?'表示第二个参数为可选,可传递也可不传递


fullName('zhou')
fullName('zhou', 'yajing')

-------------------------------------------------------------------------
// 函数中设置参数默认值
function fullName2 (firstName: string = 'zhou', lastName: string) {
  console.log(firstName)
  console.log(lastName)
}
fullName2(undefined, 'yajing')
fullName2('shi', 'yajing')

-------------------------------------------------------------------------
// 取函数剩余所有参数
function push (arr: any[], ...items: any[]) {
  items.forEach(item => {
    arr.push(item)
  })
}

let arr: Array<any> = []
push(arr, 1, 2, 4)
console.log(arr)

-------------------------------------------------------------------------
// 接口
interface Person {
  name: string
  age?: number
  readonly haha: string // readonly表示只读,不可修改
  func: (x: number, y: number) => number
  [propsName: string]: any // 其中propsName指索引签名,表示接口中非必须实现,propsName也可以叫abc都行,自己定义
}
let p: Person = {
  name: 'zhou',
  age: 22,
  haha: '我是只读不可修改',
  func: (x:number, y:number) => {
    return x + y
  },
  sex: 'nan'
}
console.log(p)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值