Typescript快速认清函数类型定义结构,函数类型声明与箭头函数的区别

el/2024/2/25 23:40:05

新人学习的时候常常难以分辨箭头函数和箭头声明的区别,以下做详细阐释,以求以后一眼就能认出二者的差别。

首先来看普通函数的定义


function (x: number, y: number): void {console.log("object");
}
function 函数名(参数): 返回值类型

然后是函数表达式的定义,及其变种 

完整版:
const add: (x: number, y: number) => void//函数类型
= (x: number, y: number): void => {//函数定义console.log("object");
};省略及变形:
const add: (x: number, y: number) => number = (x, y) => {console.log('object');return x + y;
}
const add: (x: number, y: number) => number = (x, y):number => {console.log('object');return x + y;
}
const add = (x, y) => {console.log('object');return x + y;
}//function形式
const add = function(x: number, y: number): void{console.log("object");
};//存储函数类型,这两个有别于上面的,只是用作函数的类型约束,不是函数定义
let add: (x: number, y: number) => number;
type add = (x: number, y: number) => number;

首先,const let 后面跟的肯定是变量,一般是用来接收函数,即函数的别名;该函数别名后如果跟的是冒号,则是该函数的类型(也可能省略),表现为接口或类型表达式,如:(x: number, y: number) => void,(注:只有函数类型表达式的返回值为=> 其他表现为: void)

其次,等号将语句分为两部分,前面是接收函数的变量,包括函数别名和类型(类型可省略),等号后面整体是一个函数,有function和箭头函数两种。等号后不可能是当前函数的类型。

要弄清函数定义的结构,可以先用等号定位两边,然后通过let/const 确定函数别名,然后再按上面定义进行划分。

如有疑问,请在评论区留言;如有帮助,请点个赞,Thanks♪(・ω・)ノ


http://www.ngui.cc/el/4890815.html

相关文章

C/C++操作mysql数据库详解

一.准备 头文件:#include "winsock.h" #include "mysql.h" 库文件:libmysql.dll 和libmysql.lib 调用库:#pragma comment(lib,"ws2_32") #pragma comment (lib, "libmysql.lib") MYS…

SQL 常用基本语句总结大全—增删改查语句

SQL 语句的添加、删除、修改 添加、删除、修改使用 db.Execute(Sql)命令执行操作 (一) Select 语句 普通查询 查询全部的行和列 select * from users 查询部分的行并用 as 命名列(as 可用空格代替) select UserName as 用户名,NickName 密码,sex from …

一文搞懂候选码、主码、全码、外码、主属性、主键、主关键字、非主属性清晰总结

一、讲解 首先说明 键字码字,所以 主键主码主关键字,候选键候选码候选关键字... 所谓关系键,指的是一个表中的一个(或一组)属性,用来标识该表的每一行或与另一个表产生联系。 话不多说,上图&a…

【通俗易懂】关系模式范式分解教程 3NF与BCNF口诀!小白也能看懂

本来是为了复习数据库期末考试,结果找了一圈都没有发现比较好的解释,通过查阅资料和总结,为大家提供通俗易懂的解法,一听就会!并且配有速记口诀!介是你没有玩过的船新版本包含最小依赖集求法候选码求法 在…

Ubuntu添加新硬盘无损重新分区,扩充/home/,可还原

本博客适用的场景: 1.新买了一块硬盘想用它来扩充/home/或其他目录 2.之前分区有误,将根目录/home/全放在了移动硬盘上,想迁移到机械硬盘上去 3.想扩充硬盘分区,但担心数据受损 正文: 以扩充/home/为例&#xff1…

Ubuntu用户无法登陆ssh出现permission denied,please try again

适用情形: 1.使用ssh远程连接,remote等出现permission denied,please try again。 2.使用final shell等软件登陆时,密码已经正确却一直让重输密码。 3.一个账号可以登陆,另外一个账号不可登陆(多为新账号&#xff0…

【有效】2016/2013/2010 软件的安装解决方法

使用常规的kms软件进行解决 支持2016/2013/2010版本 链接:https://pan.baidu.com/s/1Dr74LmJyLdWQtx00_i3jWg 提取码:o4tw ​​​​​​​ ​​​​​​​ 链接有效麻烦点个赞~

vue无缝滚动插件

&#xff08;记录学习的过程&#xff09; 1.安装npm install --save vue-seamless-scroll 2.main.js中引入 import scroll from vue-seamless-scroll Vue.use(scroll);3.h5部分 <vue-seamless-scroll :data"listData" class"seamless-warp"><u…

vue引echarts地图

安装jquery npm install jquery --save 需要显示地图的页面添加 import $ from jquery; vue.config.js中添加 const webpack require("webpack") <div id"main" style"width: 800px;height:400px;"></div> //容器 mounted(){ …

vue使用swiper实现轮播图

(记录学习的过程) 1.安装插件 npm install vue-awesome-swiper3.1.3 --savenpm install swiper6.3.5 --save 2.main.js中引入 import VueAwesomeSwiper from vue-awesome-swiper import swiper/swiper-bundle.css Vue.use(VueAwesomeSwiper) 3. <swiper :options&qu…