【OpenHarmony】TypeScript 语法 ④ ( 函数 | TypeScript 具名函数和匿名函数 | 可选参数 | 剩余参数 | 箭头参数 )

文章目录

  • 一、TypeScript 函数
    • 1、TypeScript 具名函数和匿名函数
    • 2、TypeScript 函数 与 JavaScript 函数对比
    • 3、TypeScript 函数 可选参数
    • 4、TypeScript 函数 剩余参数
    • 5、TypeScript 箭头函数



在这里插入图片描述


参考文档 : <HarmonyOS第一课>ArkTS开发语言介绍





一、TypeScript 函数




1、TypeScript 具名函数和匿名函数


TypeScript 语言中的 函数语法 与 JavaScript 类似 , 但是 在 JavaScript 函数基础上 增加了 类型注解 , 函数代码的 可读性 和 健壮性 增加了 ;

JavaScript 中的函数 不需要 声明 形参 和 返回值类型 , 但是在 TypeScript 中 , 必须声明 形参和返回值 类型 ;

TypeScript 函数 与 Kotlin 函数 极其相似 ;


TypeScript 函数 使用 function 关键字定义 , 在 JavaScript 函数基础上 , 增加了 形参类型 和 返回值 类型声明 , 如下所示 :

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

也可以使用 匿名函数 形式 , 将 函数 赋值给一个变量 , 通过变量调用函数 ;

let funAdd = function (a: number, b: number): number {
	return a + b;
}

在 https://ts.nodejs.cn/play 中运行 TypeScript 代码 :

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

let funAdd = function (a: number, b: number): number {
	return a + b;
}

console.log(add(1, 2))
console.log(funAdd(3, 4))

执行结果 :

[LOG]: 3 
[LOG]: 7 

在这里插入图片描述


2、TypeScript 函数 与 JavaScript 函数对比


TypeScript 函数 与 JavaScript 函数对比 : 唯一区别就是 JavaScript 函数中 , 不允许声明 函数形参 和 返回值 的类型 ;

  • TypeScript 函数 : 函数 形参 和 返回值 必须声明类型 ;
function add(a: number, b: number): number {
	return a + b;
}

let funAdd = function (a: number, b: number): number {
	return a + b;
}
  • JavaScript 函数 : 函数 形参 和 返回值 必须不能声明类型 ;
        function add(a, b) {
            return a + b;
        }

        let funAdd = function(a, b) {
            return a + b;
        }

在 JavaScript 中 , 是不能为 函数的 形参 和 返回值 设置类型的 , 将上述代码拷贝到 Visual Studio Code 的 HTML 代码中 , 会报如下错误 :

Type annotations can only be used in TypeScript files.javascript

在这里插入图片描述

可见 TypeScript 比 JavaScript 增加的就是 Type 类型声明 , 变量类型 , 函数形参 / 返回值 类型 ;

将上述 函数的 形参 和 返回值 类型 删除 , 就是 JavaScript 代码 ,

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <!-- 设置 meta 视口标签 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>JavaScript</title>
    <style></style>
    <script>
        function add(a, b) {
            return a + b;
        }

        let funAdd = function(a, b) {
            return a + b;
        }

        console.log(add(1, 2))
        console.log(funAdd(3, 4))
    </script>
</head>

<body>
</body>

</html>

代码运行结果 :
在这里插入图片描述


3、TypeScript 函数 可选参数


在 TypeScript 函数 的 形参 中 , 形参名称后面 使用 ? 符号 , 可以将该形参声明为函数的 可选参数 , 也就是调用函数时 , 可以为该形参传入实参 , 也可以不传入实参 ;

代码示例 :

// 声明第二个参数 b 是可选参数
function add(a: number, b?: number): number {
	return a;
}

// 传入可选参数
console.log(add(2, 4))
// 不传入可选参数
console.log(add(8))

在 https://ts.nodejs.cn/play 中运行 TypeScript 代码 :

[LOG]: 2 
[LOG]: 8 

在这里插入图片描述


4、TypeScript 函数 剩余参数


在 TypeScript 函数 函数形参 中 , 还可以使用 " 剩余参数 " , 剩余参数 可以理解为 个数不限的 可选参数 , 参数个数可以是 0 到 n 个 , 使用 ... 三个点符号 声明 剩余参数 , 剩余参数必须是数组类型 ;

代码示例 : 在下面的代码中 , 想要传入 0 ~ n 个 number 类型的参数 , 就把该参数声明为剩余参数 , 剩余参数类型必须是传入类型的数组类型 , 在参数名前使用 ... 符号 ;

// 声明第二个参数 b 是 剩余参数
function add(a: number, ...b: number[]): number {
    console.log("传入的剩余参数 : " + b);
	return a;
}

// 传入 剩余参数
console.log(add(2, 4, 6, 8))
// 传入 剩余参数
console.log(add(1, 2))
// 不传入 剩余参数
console.log(add(8))

在 https://ts.nodejs.cn/play 中运行 TypeScript 代码 :

[LOG]: "传入的剩余参数 : 4,6,8" 
[LOG]: 2 
[LOG]: "传入的剩余参数 : 2" 
[LOG]: 1 
[LOG]: "传入的剩余参数 : " 
[LOG]: 8 

在这里插入图片描述


5、TypeScript 箭头函数


在 ES6 版本的 TypeScript 语言中 , 可以定义 " 箭头函数 " , 箭头函数有如下特点 :

  • 省略 function 关键字 ;
  • 使用 => 箭头符号定义函数 ;

将下面的正常函数 , 转为箭头函数 ,

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

对应的箭头函数如下 : 将 箭头函数 赋值给变量 add ;

// 声明箭头函数
let add = (a: number, b: number): number => {
    return a + b;
}

在 https://ts.nodejs.cn/play 中运行 TypeScript 代码 :

// 声明箭头函数
let add = (a: number, b: number): number => {
    return a + b;
}

console.log(add(1, 2));

运行结果 :

[LOG]: 3 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/671933.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PHP MySQL图解学习指南:开启Web开发新篇章

PHP曾经是最流行的Web开发语言&#xff0c;许多世界领先的网站(如Facebook、维基百科和WordPress)都是用它编写的。PHP运行在Web服务器端&#xff0c;通过使用存储在MySQL数据库中的数据&#xff0c;使得网站可以为每一位访问者显示不同的定制页面。书中采用简单、直观的图示化…

bootstrap5-学习笔记2-模态框+弹窗+tooltip+popover+信息提示框

参考&#xff1a; Bootstrap5 教程 | 菜鸟教程 https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 https://v5.bootcss.com/docs/getting-started/introduction/ 之前用bootstrap2和3比较多&#x…

15.使用Ollydbg分析处理hp减伤害的函数

上一个内容&#xff1a;14.Ollydbg的基本使用 在 9.游戏中真正的无敌 里找了处理hp减伤害函数的方法 Ollydbg对hp减伤害函数打一个断点&#xff0c;然后一步一步分析数据&#xff0c;下图是进入了hp减伤害函数之后被断点主的样子&#xff0c;然后这时的ecx是人物this地址&…

【刷题】初探递归算法 —— 消除恐惧

送给大家一句话&#xff1a; 有两种东西&#xff0c; 我对它们的思考越是深沉和持久&#xff0c; 它们在我心灵中唤起的惊奇和敬畏就会日新月异&#xff0c; 不断增长&#xff0c; 这就是我头上的星空和心中的道德定律。 -- 康德 《实践理性批判》 初探递归算法 1 递归算…

前端逆向之查看接口调用栈

一、来源 再分析前端请求接口数据的时候&#xff0c;其中有一个sid不知道是前端如何获取的&#xff0c;一般情况下只需要全局搜搜sid这个字符串或者请求接口的名称就可以了&#xff0c;基本都能找到sid的来源&#xff0c;但是今天这个不一样&#xff0c;搜什么都搜不到 接口地…

SAP跨服务器传输请求号

环境一、两台服务器并没有维护连接传输线路&#xff08;DEV和QAS&#xff09; 环境二、需要将外部公司服务器上的请求号传输到内部服务器中 方式&#xff1a;先从开发环境或服务器中下载请求号&#xff0c;再将请求号上传到目标服务器或环境中&#xff0c;在目标服务器使用ST…

分享:重庆耶非凡科技有限公司人力资源项目靠不靠谱?

在当今快速变化的商业环境中&#xff0c;人力资源项目作为企业发展的重要支撑&#xff0c;其专业性和可靠性成为企业选择合作伙伴时的重要考量因素。重庆耶非凡科技有限公司作为一家在行业内颇具影响力的科技企业&#xff0c;其人力资源项目——人力RPO(招聘流程外包)项目&…

实现Redis和数据库数据同步问题(JAVA代码实现)

这里我用到了Redis当中的发布订阅模式实现(JAVA代码实现) 先看图示 下面为代码实现 首先将RedisMessageListenerContainer交给Spring管理. Configuration public class redisConfig {AutowiredRedisConnectionFactory redisConnectionFactory;AutowiredQualifier("car…

Hive安装-内嵌模式

1.官网下在hive3.1.2版本 Index of /dist/hive/hive-3.1.2 2.上传到master节点的/opt/software目录下 3.解压到/opt/module目录下 tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/ 检查解压后文件 4.修改名字 改为hive cd /opt/module mv apache-hive-3.1.2-bin…

数据结构 实验 1

题目一&#xff1a;用线性表实现文具店的货品管理问题 问题描述&#xff1a;在文具店的日常经营过程中&#xff0c;存在对各种文具的管理问题。当库存文具不足或缺货时&#xff0c;需要进货。日常销售时需要出库。当盘点货物时&#xff0c;需要查询货物信息。请根据这些要求编…

Crosslink-NX器件应用连载(11): 图像(数据)远程传输

作者&#xff1a;Hello&#xff0c;Panda 大家下午好&#xff0c;晚上好。这里分享一个Lattice Crosslink-NX器件实现图像或数据&#xff08;卫星数据、雷达数据、ToF传感器数据等&#xff09;远程传输的案例&#xff08;因为所描述的内容颇杂&#xff0c;晒图不好晒&#xff…

HCIP的学习(27)

RSTP—802.1W—快速生成树协议 STP缺陷&#xff1a; 1、收敛速度慢----STP的算法是一种被动的算法&#xff0c;依赖于计时器来进行状态变化 2、链路利用率低​ RSTP向下兼容STP协议。&#xff08;STP不兼容RSTP&#xff09; 改进点1—端口角色 802.1D协议---根端口、指定端口…

[数据集][目标检测]猕猴桃检测数据集VOC+YOLO格式1838张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1838 标注数量(xml文件个数)&#xff1a;1838 标注数量(txt文件个数)&#xff1a;1838 标注…

【Java】Java遍历Map方法合集

本文摘要&#xff1a;Java遍历Map方法合集 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号&#xff1a;洲与AI。 &#x1f913; 欢迎大家关注&am…

如何进入 -MGMTDB目录

想想这个问题&#xff0c;大家可能觉得很简单吧&#xff0c;先不看答案&#xff0c;你试一试如何进去 1.问题现象&#xff1a; 我直接进入&#xff1a; cd -MGMTDB 直接就报错了&#xff1a; [gridhost03 _mgmtdb]$ cd -MGMTDB -bash: cd: -M: invalid option cd: usage: c…

deepin开机取消挂载windows系统磁盘(Win11+deepinV23RC双系统)

目录 一、需求分析二、实现方法 一、需求分析 机器有两块硬盘&#xff0c;硬盘0装的是Win11,硬盘1装的是deepinV23RC,为避免使用deepin系统时对windows分区误操作&#xff0c;因此需要取消windows分区的挂载。 二、实现方法

解决TrueNas Scale部署immich后人脸识别失败,后台模型下载异常,immich更换支持中文搜索的CLIP大模型

这个问题搞了我几天终于解决了&#xff0c;搜遍网上基本没有详细针对TrueNas Scale部署immich应用后&#xff0c;CLIP模型镜像下载超时导致人脸识别失败&#xff0c;以及更换支持中文识别的CLIP模型的博客。 分析 现象&#xff1a;TrueNas Scale安装immich官方镜像应用后&…

记录一次cnvd事件型证书漏洞挖掘

事件起因是因为要搞毕设了&#xff0c;在为这个苦恼&#xff0c;突然负责毕设的老师说得到cnvd下发的证书结合你的漏洞挖掘的过程是可以当成毕设的&#xff0c;当时又学习了一段时间的web渗透方面的知识&#xff0c;于是踏上了废寝忘食的cnvd证书漏洞挖掘的日子。 前言&#x…

动态规划算法:背包问题

背包问题概述 背包问题 (Knapsack problem) 是⼀种组合优化的 NP完全问题 。 问题可以描述为&#xff1a;给定⼀组物品&#xff0c;每种物品都有⾃⼰的重量和价格&#xff0c;在限定的总重量内&#xff0c;我们如何选择&#xff0c;才能使得物品的总价格最⾼。 根据物品的个…

vector实现后半部分

一.迭代器失效 1.定义 指原迭代器在扩容/缩容/修改后指向无效元素或无效地址处 erase的迭代器失效 2.原因&#xff1a; 1.有的编译器实现erase会缩容拷贝 2.删除最后一个后&#xff0c;其指向无效元素 VS中不允许再次使用erase完的迭代器&#xff0c;为了让编写的代码移植…