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

文章目录

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

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

一、TypeScript 函数


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

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

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

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

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

typescript 复制代码
function add(a: number, b: number): number {
	return a + b;
}

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

typescript 复制代码
let funAdd = function (a: number, b: number): number {
	return a + b;
}

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

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))

执行结果 :

typescript 复制代码
[LOG]: 3 
[LOG]: 7 

2、TypeScript 函数 与 JavaScript 函数对比

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

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

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

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

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

typescript 复制代码
Type annotations can only be used in TypeScript files.javascript

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

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

html 复制代码
<!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 函数 的 形参 中 , 形参名称后面 使用 ? 符号 , 可以将该形参声明为函数的 可选参数 , 也就是调用函数时 , 可以为该形参传入实参 , 也可以不传入实参 ;

代码示例 :

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 代码 :

typescript 复制代码
[LOG]: 2 
[LOG]: 8 

4、TypeScript 函数 剩余参数

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

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

typescript 复制代码
// 声明第二个参数 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 代码 :

typescript 复制代码
[LOG]: "传入的剩余参数 : 4,6,8" 
[LOG]: 2 
[LOG]: "传入的剩余参数 : 2" 
[LOG]: 1 
[LOG]: "传入的剩余参数 : " 
[LOG]: 8 

5、TypeScript 箭头函数

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

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

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

typescript 复制代码
function add(a: number, b: number): number {
	return a + b;
}

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

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

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

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

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

运行结果 :

typescript 复制代码
[LOG]: 3 
相关推荐
excel7 小时前
nuxt 3 升级 nuxt 4 报错之 hasInjectionContext
前端
小磊哥er7 小时前
深入解构Claude Code - 第 7 篇 · 连接外面的世界
javascript·ai编程
何以解忧,唯有..7 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
小磊哥er7 小时前
深入解构Claude Code - 第 6 篇 · 终端里的图形界面
javascript·ai编程
海兰8 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融
骐骥18 小时前
学习:使用postMessage()建立应用侧与前端页面的数据通道
harmonyos·鸿蒙·jsbridge·postmessage·数据通道
软件聚导航8 小时前
「聚小软 AI 助手」技术升级:从数据库检索到 RAG 知识库问答
前端·数据库·mysql·微信小程序·小程序·ai编程·rag
恋猫de小郭9 小时前
看懂大模型架构术语,帮助你理解目前常见的大模型开源架构
前端·人工智能·ai编程
yma169 小时前
通过提示词实现GitHub Pages 和 Nginx 双部署竟然这么简单?
前端
可乐鸡翅yeah_9 小时前
hls.js 内存泄漏实战排查,直播 M3U8 长时间播放异常定位方案
开发语言·javascript·python·django·ecmascript·m3u8·m3u8在线