前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >typescript基础篇(4):函数

typescript基础篇(4):函数

作者头像
一粒小麦
发布2020-08-10 15:09:26
4770
发布2020-08-10 15:09:26
举报
文章被收录于专栏:一Li小麦

4. 函数

函数在前面的章节已经多次使用,本节将梳理ts函数的知识。

回顾ts,定义一个函数有四种写法:

代码语言:javascript
复制
// 1.直接定义
let add1 = (x: number, y: number) => x + y

/*** 以下只是定义函数类型 */

// 2.类型注解
let add2: (x: number, y: number) => number

// 3.类型别名
type add3 = (x: number, y: number) => number

// 4.接口定义
interface add4 {
  (x: number, y: number): number
}

4.1 不定参数

我们在调用函数时,入参多一个不行,少一个也不行。

代码语言:javascript
复制
add1(1) // 报错,参数少了
add1(1,2,3) // 报错,参数多了

有时候我们需要传入不定个数的参数,此时可用?调用可选参数

代码语言:javascript
复制
// 注意可选参数必须在必选参数之后
const add5 = (x: number, y?: number) => (y ? x + y : x)
代码语言:javascript
复制
// 参数默认值
const add6 = (x: number, y = 0, z: number, q = 1) => x + y + z + q
// 剩余参数不用也可以
console.log(add6(1, undefined, 3)) // 4

实现叠加器:

代码语言:javascript
复制
const add7 = (x: number, ...rest: number[]) =>
  x + rest.reduce((pre, cur) => pre + cur)
add7(1,2,3,4) //10

4.2 函数重载

两个同名函数,参数不同(个数,类型)就实现了一个函数重载。重载的好处是,不需要给两个函数功能相似的方法,写两套函数。接下来看ts的例子。

Ts实现一个add函数,如果参数全是数字,则返回相加之和,如果参数全是字符串,则返回对应拼接。

代码语言:javascript
复制
// 声明
function add8(...rest: number[]): number
function add8(...rest: string[]): string
// 具体实现
function add8(...rest: any[]): any {
  let first = rest[0]
  if (typeof first == "string") {
    return rest.join("")
  }
  if (typeof first == "number") {
    return rest.reduce((pre, cur) => pre + cur)
  }
}

console.log(add8(1,2,3)) //6
console.log(add8('a','b','c')) //abc
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一Li小麦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4. 函数
    • 4.1 不定参数
      • 4.2 函数重载
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档