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) // 函数重载声明后,这行则会进行报错,不能混合传入



相关文章
|
3月前
|
JavaScript
typeScript基础(3)_ts函数默认值和可选参数
本文介绍了在TypeScript中如何使用函数的默认值和可选参数。展示了如何为函数参数指定默认值,使得在调用函数时可以省略某些参数,以及如何定义可选参数。
225 2
|
2月前
|
移动开发 JavaScript 前端开发
TypeScript:数组类型&函数使用&内置对象
本文介绍了 TypeScript 中的数组类型、对象数组、二维数组、函数、函数重载、内置对象等概念,并通过代码示例详细展示了它们的使用方法。还提供了一个使用 HTML5 Canvas 实现的下雨效果的小案例。
|
3月前
|
JavaScript
typeScript基础(7)_函数的类型
本文介绍了TypeScript中函数的类型,包括函数声明与函数表达式的类型注解,如何定义函数的参数类型、返回类型,以及可选参数和参数默认值。还探讨了函数的剩余参数、如何使用接口定义函数的形状,以及函数重载的概念和实践。
37 0
|
5月前
|
JavaScript 前端开发 程序员
Typescript 【实用教程】(2024最新版)含类型声明,类型断言,函数,接口,泛型等
Typescript 【实用教程】(2024最新版)含类型声明,类型断言,函数,接口,泛型等
93 0
|
5月前
|
JavaScript
TypeScript(六)函数
TypeScript(六)函数
35 0
|
6月前
|
JavaScript 前端开发 API
TypeScript 函数
TypeScript 函数
|
2月前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
64 0
|
2月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
3月前
|
存储 JavaScript
typeScript进阶(11)_元组类型
本文介绍了TypeScript中的元组(Tuple)类型,它是一种特殊的数组类型,可以存储不同类型的元素。文章通过示例展示了如何声明元组类型以及如何给元组赋值。元组类型在定义时需要指定数组中每一项的类型,且在赋值时必须满足这些类型约束。此外,还探讨了如何给元组类型添加额外的元素,这些元素必须符合元组类型中定义的类型联合。
56 0
|
1月前
|
设计模式 JavaScript 安全
TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等
本文深入探讨了TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等,旨在帮助开发者在保证代码质量的同时,实现高效的性能优化,提升用户体验和项目稳定性。
46 6