TypeScript 函数的详细使用(默认参数、可选参数、剩余参数、重载声明)

简介: TypeScript 函数的详细使用(默认参数、可选参数、剩余参数、重载声明)
  • 函数是一种特殊的对象,可以被调用。TS 里的函数和 原生ES6 里的函数差不太多,只是多了一些其他功能。
  • 函数的简单使用
// js
// 命名函数
function add (x, y) { return x + y }
// 匿名函数
const add1 = function (x, y) { return x + y }
// ts
// 命名函数
function add (x: number, y: number): number { return x + y }
// 匿名函数
const add1 = function (x: number, y: number): number { return x + y }
// 完整的函数写法:const add2: 函数类型 = 符合函数类型的值
const add2: (x: number, y: number) => number = function (x: number, y: number): number { return x + y }
  • 函数参数的高级使用
// 可选参数
function add (x: number, y: number, z?:number): number {
  return x + y + (z || 0)
}
console.log(add(1, 10)) // 11
console.log(add(1, 10, 5)) // 15
// 默认参数
function add1 (x: number, y: number = 10, z?:number): number {
  return x + y + (z || 0)
}
console.log(add1(1)) // 11
// 剩余参数
function add2 (x: number, ...args: number[]) {
  // console.log(x)    // 1
  // console.log(args) // [2, 3, 4, 5]
  let total = x
  args.forEach(item => { total += item })
  return total
}
console.log(add2(1, 2, 3, 4, 5)) // 15
// 参数支持多种传入类型
function add3 (x: string| number, y: string|number): number {
  return Number(x || 0).valueOf() + Number(y || 0).valueOf()
}
console.log(add3('1', '10'))  // 11
console.log(add3(1, '10'))    // 11
// 返回值支持多种返回类型
function add4 (x: string, y: string, flag: boolean): number|string {
  if (flag) {
    return x + y
  } else {
    return parseInt(x) + parseInt(y)
  }
}
console.log(add4('1', '10', true))   // '110'
console.log(add4('1', '10', false))  // 11
  • 函数的重载声明
// 函数重载声明(一定要写在函数的上面,写在函数下面会报错)
function add (x: string, y: string): string
function add (x: number, y: number): number
// 定义一个函数,如果传入都是字符串那么拼接,如果都是数字那么相加
function add (x: string | number, y: string | number): string | number {
  if (typeof x === 'string' && typeof y === 'string') {
    return x + y // 字符串拼接
  } else if (typeof x === 'number' && typeof y === 'number') {
    return x + y // 数字相加
  }
}
// 这两种是没问题的,每次传入的两种参数类型一致
add(1, 1)
add('1', '1')
// 但是下面这两种混合传入就有问题了,如果不希望传入这样的混合格式,那么就需要函数重载声明一下,进行报错
// 如果不声明,下面这种混合传入也不会报错
add(1, '1') // 函数重载声明后,这行则会进行报错,不能混合传入
add('1', 1) // 函数重载声明后,这行则会进行报错,不能混合传入



相关文章
|
2月前
|
JavaScript 前端开发 测试技术
[小笔记]TypeScript/JavaScript模拟Python中的Range函数
[小笔记]TypeScript/JavaScript模拟Python中的Range函数
42 0
|
2月前
|
JavaScript 编译器
TypeScript中泛型在函数和类中的应用
【4月更文挑战第23天】TypeScript的泛型在函数和类中提供了灵活性,允许处理多种数据类型。了解泛型是掌握TypeScript类型系统的关键。
|
27天前
|
JavaScript 前端开发 API
TypeScript 函数
TypeScript 函数
|
27天前
|
JavaScript 前端开发
typescript 函数类型
typescript 函数类型
|
29天前
|
JavaScript 编译器 前端开发
11.【TypeScript 教程】函数(Function)
11.【TypeScript 教程】函数(Function)
8 0
|
2月前
|
JavaScript
【HarmonyOS 4.0 应用开发实战】TypeScript入门之声明、数据类型、函数、类的详讲
【HarmonyOS 4.0 应用开发实战】TypeScript入门之声明、数据类型、函数、类的详讲
55 0
|
2月前
|
JavaScript 前端开发 编译器
10分钟让你吃透 《TypeScript》 函数
TypeScript提供了丰富的函数类型定义方式,可以对函数参数、返回值进行类型注解,从而提供了更为强大的类型检查。
|
27天前
|
JavaScript 前端开发 Java
TypeScript 类型兼容性
TypeScript 类型兼容性
|
27天前
|
JavaScript 前端开发
typescript 混合类型
typescript 混合类型
|
11天前
|
JavaScript 前端开发 IDE
TypeScript中的声明文件(.d.ts):扩展类型系统
TypeScript的`.d.ts`声明文件为JS库提供类型信息,增强IDE支持,如自动完成和类型检查。通过声明合并,可在全局作用域定义类型。示例包括为`my-library`创建声明模块,导出函数和接口。声明文件通常存于`@types`或指定`typeRoots`。用于旧JS代码的类型注解,如`myGlobalObject`。学习更多,参阅TypeScript官方文档。分享你的TS声明文件经验!