typescript中箭头函数与普通函数的区别

 更新时间:2026年05月14日 09:28:34   作者:心随雨下  
本文主要介绍了typescript中箭头函数与普通函数的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在 TypeScript 中,箭头函数与普通函数的区别基本继承了 JavaScript 的特性,同时由于 TypeScript 的类型系统,还存在一些与类型相关的差异。

主要区别如下:

1.语法与类型注解

普通函数:需要显式使用function关键字,参数和返回值的类型注解直接写在参数列表和函数体前

function add(a: number, b: number): number {
  return a + b;
}

箭头函数:语法更简洁,省略function关键字,使用=>连接参数和函数体

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

2.this指向与类型推断

普通函数:

(1)this的类型是动态的,取决于调用方式

 (2) 可通过this: Type语法显式指定this类型(TypeScript 扩展特性)

function greet(this: { name: string }): string {
  return `Hello, ${this.name}`;
}

箭头函数:

 (1) 没有自己的this,继承自外层作用域

 (2)无法通过this: Type指定this类型(TypeScript 会报错)

 (3) TypeScript 能更好地推断箭头函数中this的类型

3.其他 JavaScript 继承的区别

构造函数:箭头函数不能作为构造函数使用,无法通过new调用(TypeScript 会编译报错)

arguments 对象:箭头函数没有arguments对象,需使用剩余参数...args

原型属性:箭头函数没有prototype属性

Generator 支持:箭头函数不能作为 Generator 函数使用

4.类型推断差异

在 TypeScript 中,箭头函数的类型推断往往更简洁,尤其是在回调函数中:

// 普通函数需要显式注解参数类型
const numbers = [1, 2, 3];
numbers.map(function(item: number): number {
  return item * 2;
});
// 箭头函数可省略类型注解(TypeScript自动推断)
numbers.map(item => item * 2);

5.函数重载

箭头函数:不支持函数重载,只能有一个函数签名

普通函数:支持函数重载,可定义多个函数签名

function format(value: string): string;
function format(value: number): string;
function format(value: string | number): string {
  return String(value);
}

总结来说,TypeScript 中的箭头函数与普通函数的核心区别和 JavaScript 一致,但 TypeScript 的类型系统让这些区别在类型检查层面更加明显,尤其是在this类型处理和函数重载方面。

到此这篇关于typescript中箭头函数与普通函数的区别的文章就介绍到这了,更多相关typescript 箭头函数与普通函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javascript新建标签,判断键盘输入,以及判断焦点(示例代码)

    javascript新建标签,判断键盘输入,以及判断焦点(示例代码)

    这篇文章主要介绍了javascript新建标签,判断键盘输入,以及判断焦点(示例代码)。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • pjblog中的UBBCode.js

    pjblog中的UBBCode.js

    pjblog中的UBBCode.js...
    2007-04-04
  • js实现简单折叠、展开菜单的方法

    js实现简单折叠、展开菜单的方法

    这篇文章主要介绍了js实现简单折叠、展开菜单的方法,涉及javascript动态操作页面元素变换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • 使用Vite创建一个动态网页的前端项目

    使用Vite创建一个动态网页的前端项目

    这篇文章主要介绍了使用Vite创建一个动态网页的前端项目,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-06-06
  • JS实现扫码枪扫描二维码功能

    JS实现扫码枪扫描二维码功能

    这篇文章主要介绍了JS实现扫码枪扫描二维码功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Javascript 实现TreeView CheckBox全选效果

    Javascript 实现TreeView CheckBox全选效果

    Javascript 实现TreeView CheckBox 选中父节点时所有子节点全选,取消时全部取消
    2010-01-01
  • el-date-picker 如何限制选择六个月内的日期

    el-date-picker 如何限制选择六个月内的日期

    这篇文章主要介绍了el-date-picker 如何限制选择六个月内的日期,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 详解JavaScript中Canvas的高级绘图和动画技术

    详解JavaScript中Canvas的高级绘图和动画技术

    JavaScript中的Canvas 是一个强大的 HTML5 元素,允许你通过编程方式创建图形、绘制图像和实现复杂的动画效果,在本文中,我们将深入探讨 JavaScript Canvas 的高级绘图和动画技术,并提供一个复杂的案例,以展示其潜力,需要的朋友可以参考下
    2023-10-10
  • js词法作用域与this实例详解

    js词法作用域与this实例详解

    作用域值一个变量的作用饿范围,下面这篇文章主要给大家介绍了关于js词法作用域与this的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • JS addEventListener()和attachEvent()方法实现注册事件

    JS addEventListener()和attachEvent()方法实现注册事件

    这篇文章主要介绍了JS addEventListener()和attachEvent()方法实现注册事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论