函数

作者: DeadMoon | 来源:发表于2021-12-30 20:16 被阅读0次

typeScript的函数是在es6的函数特性的基础上加了一些后端的概念:泛型、参数类型声明、返回值类型声明、重载等特性

js 中声明一个函数如下:

// 函数声明
function log(msg) {
  return msg
}
// 函数表达式
const log = function (msg) {
  return msg
}
// 箭头函数
const log = msg => msg

上面的函数在 typescript 表现如下:

// 声明一个函数一定需要加入类型校验
// 函数声明
function log(msg: string): string {
  return msg
}
// 函数表达式
const log: (msg: string) => string = function (msg: string): string {
  return msg
}
// 箭头函数 
const log: (msg: string) => string = (msg: string): string => msg
or
const log: { (msg: string): string } = (msg: string): string => msg

不同于 js 的是 typescript 定义类型后一定要严格的按照约定传入参数数量及类型, 否则编译器会抛出异常

function log(msg: string): string {
  return msg
}
log(1)   // 类型“number”的参数不能赋给类型“string”的参数。ts(2345)
log('hello world')  // good
可选参数, 默认参数和剩余参数

js中如果函数定义了两个参数,但是在调用时只传入一个参数(未传的参数当做 undefined 解析), 函数依旧会被正常调用, 但是在 ts 中却是不行的, 如果想这么做, 需要将属性置为可选属性

// 可选参数通过属性前加上?实现
// 需要注意的是   必选参数不能位于可选参数后。js 是可以的
function fullName(firstName: string, lastName?: string): string {
  return firstName + lastName
}
// 默认参数, 默认参数会当做可选参数处理
function fullName(firstName: string, lastName = 'world'): string {
  return firstName + lastName
}
// 需要注意的是, 可选参数 同 js 表现一样 一定是 undefined 才会生效
fullName('hello') // hello world
fullName('hello', null) // hellonull
// 剩余参数同 es6, 剩余参数必须位于参数最后, es6解构也是如此
function total(defaultValue: number, ...list: number[]) {
  return list.reduce((pre, cur) => pre + cur, defaultValue)
}
函数重载

不同于 js, ts支持重载, 所谓重载是名称相同并且参数数量类型不同创建多个方法的能力

function greetNane (name:string) :string;
function greetNane (name:number) :number;
function greetNane (name:boolean) :boolean;
// 下面参入的类型一定要包含上面所有的情况
function greetNane (name: string|number|boolean): string|number|boolean{
  return name
}

虽然 typeScript 支持 函数重载, 但是就个人理解而言,使用泛型接口来实现可能更好一点

相关文章

  • Excel(三)

    AND函数 OR函数 NOT函数 IF函数 频率分析函数FREQUENCY

  • if、else if、for、while、repeat函数

    ①if函数 ②else if函数 ③for函数 ④while函数 ⑤repeat函数

  • strsplit、mapply、paste、match函数

    strsplit函数 mapply函数 strsplit函数 mapply函数 paste函数 match函数 第...

  • Oracle中常用函数(SQL)

    Oracle函授有以下几个分类:数字函数、字符函数、日期函数、转换函数、集合函数、分析函数 数字函数: 字符函数:...

  • MySQL函数

    字符函数 数字运算函数 比较运算符和函数 日期时间函数 信息函数 聚合函数 加密函数 流程函数

  • BI-SQL丨AND & OR & IN

    AND函数 & OR函数 & IN函数 AND函数、OR函数和IN函数都可以理解是WHERE函数的补充,当然也可以...

  • Python之函数

    课程大纲 函数定义 函数的参数 函数的返回值 高阶函数 函数作用域 递归函数 匿名函数 内置函数 函数式编程 将函...

  • 函数基本知识

    函数 函数的定义: def 函数名() 函数的调用:函数名() #不能将函数调用放在函数定义上方 函数的文档注...

  • 积分表——不定期更新

    基本初等函数包括: 常函数: 幂函数 指数函数 对数函数 三角函数 反三角函数 I、反函数Ⅱ、复合函数:初等函数(...

  • MySQL基本使用

    函数 常用函数 数学函数 字符串函数 日期函数

网友评论

      本文标题:函数

      本文链接:https://www.haomeiwen.com/subject/rmavqrtx.html