当前位置: 首页 > news >正文

TypeScript 中函数的理解及其与 JavaScript 函数的差异

文章目录

    • 一、函数概述
    • 二、TypeScript 函数的使用
      • 函数类型的声明
      • 可选参数
      • 剩余参数
      • 函数重载
    • 三、TypeScript 与 JavaScript 函数的差异

一、函数概述

在 JavaScript 应用程序中,函数是核心组成部分,它们帮助我们实现代码的抽象、模拟类、隐藏信息和模块化。TypeScript 在保留 JavaScript 函数的基础上,提供了额外的功能和更丰富的应用场景。尽管 TypeScript 支持类、命名空间和模块,函数仍是定义行为的主要方式。在 TypeScript 的类型系统中,函数类型扮演着极其关键的角色,是构建可组合系统的核心。

二、TypeScript 函数的使用

TypeScript 中定义函数的方式与 JavaScript 非常相似,可以通过 function 关键字或箭头函数来定义。以下是一个简单的加法函数示例:

const add = (a: number, b: number) => a + b;

在这个例子中,我们为函数的参数指定了类型,而函数的返回类型则由 TypeScript 编译器通过类型推断得出。

函数类型的声明

在不需要提供函数实现的情况下,我们可以用以下两种方式声明函数类型:

// 方式一
type LongHand = {(a: number): number;
};
// 方式二
type ShortHand = (a: number) => number;

在函数重载的情况下,我们通常使用方式一进行声明。

可选参数

如果函数的参数可能不存在,可以在参数名后加上 ? 来表示该参数是可选的:

const add = (a: number, b?: number) => a + (b ?? 0);

这样,参数 b 可以是 number 类型或者不传递。

剩余参数

TypeScript 中的剩余参数使用 ... 语法表示,如下所示:

const add = (a: number, ...rest: number[]) => rest.reduce((sum, current) => sum + current, a);

函数重载

TypeScript 允许我们定义同名但参数类型或数量不同的函数,这被称为函数重载。在使用函数重载时,我们需要将精确的函数声明放在前面,而在实现函数时,需要包含所有可能的输入类型。
以下是一个函数重载的示例,该函数可以处理字符串拼接或数字相加:

function add(arg1: string, arg2: string): string;
function add(arg1: number, arg2: number): number;
function add(arg1: string | number, arg2: string | number) {if (typeof arg1 === 'string' && typeof arg2 === 'string') {return arg1 + arg2;} else if (typeof arg1 === 'number' && typeof arg2 === 'number') {return arg1 + arg2;}
}

三、TypeScript 与 JavaScript 函数的差异

从上述内容可以看出,TypeScript 函数与 JavaScript 函数的主要区别在于:

  • TypeScript 需要显式声明函数参数的类型和返回值类型(尽管编译器可以进行类型推断)。
  • TypeScript 支持可选参数,允许函数参数在调用时可选。
  • TypeScript 引入了函数重载,使得通过函数声明就能明确知道参数的数量和类型。

http://www.mrgr.cn/news/45283.html

相关文章:

  • Composer入门详解
  • 【C++11】右值引用
  • RFID技术在汽车焊接生产线的智能应用与优化
  • 计算机找不到msvcr110.dll解决方法,详细解读三种靠谱方法
  • javascript中null和undefined的区别
  • 0基础学习CSS(二十二)伪元素
  • SPI主从通讯稳定性之解决方法
  • 【算法】博弈论(C/C++)
  • 动态规划——简单的动态规划问题
  • 随机掉落的项目足迹:Vue3中vite.config.ts配置代理服务器解决跨域问题
  • 【Redis】持久化(下)-- AOF
  • 新手投资者如何选择低佣金的证券公司开户
  • FDS-150 土壤氮磷钾传感器 三针式不锈钢探针 可搭配速测仪 响应快
  • 国产气压传感器WF5803 2BAR测试
  • 大模型+向量数据库组合:解决问题还是制造新问题?
  • 建设官方网站怎么建
  • 软件工程相关
  • shiny APP实现xgboost 构建,超参数调节以及后概率校准
  • Qt-QSpacerItem布局相关控件(45)
  • 有限差分方法 - 拉普拉斯算子第二部分