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

【03】基础知识:typescript中的函数

一、typescript 中定义函数的方法

函数声明法

function test1(): string {return '返回类型为string'
}function test2(): void {console.log('没有返回值的方法')
}

函数表达式/匿名函数

const test3 = function(): number {return 1
}

二、typescript 中 函数参数写法

1、typescript 中定义函数传参

函数声明

function getInfo(name: string, age: number): string {// 传参name为string类型、age为number类型,返回类型为stringreturn `${name} - ${age}`
}getInfo('zhangsan', 20) // zhangsan - 20

函数表达式/匿名函数

const getInfo2 = function(name: string, age: number): string {// 传参name为string类型、age为number类型,返回类型为stringreturn `${name} - ${age}`
}getInfo2('zhangsan', 18) // zhangsan - 18

2、可选参数

在 es5 中,方法的形参和实参个数可以不一样;但是在 ts 中必须一样,如果不一样就需要配置可选参数。

ts 中 通过【 形参?: 数据类型 】形式定义可选参数,代表该参数在方法调用时可以不传入。

注意:可选参数必须到参数的最后面,否则ts编译时会报错

function getInfo(name: string, age?: number): string {if (age) {return `${name} - ${age}`} else {return `${name} - 年龄未定义`}
}getInfo('zhangsan') // zhangsan - 年龄未定义
getInfo('zhangsan'20) // zhangsan - 20

3、默认参数

创建方法时,可以给参数指定默认值。

function getInfo(name: string, age: number=18): string {return `${name} - ${age}`
}getInfo('zhangsan') // zhangsan - 18
getInfo('zhangsan'20) // zhangsan - 20

4、剩余参数

通过 es6 的 三点运算符,接受形参传过来的值

function sum (...result: number[]): number{return result.reduce((prev, cur) => {return prev + cur}, 0)
}sum(1, 2, 3, 4) // 10
function sum (a: number, ...result: number[]): number{return result.reduce((prev, cur) => {return prev + cur}, a)
}sum(1, 2, 3, 4) // 10

三、函数重载

javascript 是面向过程编程语言,没有函数重载的概念

java 中函数重载指的是,两个或者两个以上同名函数,但它们的参数不一样

typescript 中的函数重载指的是,通过为同一个函数提供多个函数类型定义来实现多种功能的目的。

typescript 为了兼容 js 重载的写法和 java 中有区别。

function getInfo(name: string): string 
function getInfo(age: number): number
function getInfo(str: any): any {if (typeof str === 'string') {return `我叫${str}`} else {return str}
} getInfo('张三') // 我叫张三
getInfo(19) // 19
getInfo(false) // ts编译报错
function getInfo(name: string): string 
function getInfo(name: string, age: number): string
function getInfo(name: any, age?: any): any {if (age) {return `我叫${name},年龄是${age}`} else {return `我叫${name}`}
}getInfo('张三', 19) // 我叫张三,年龄是19
getInfo('张三') // 我叫张三
getInfo('zhangsan', true) // ts编译报错
getInfo(19) // ts编译报错

相关文章:

【03】基础知识:typescript中的函数

一、typescript 中定义函数的方法 函数声明法 function test1(): string {return 返回类型为string }function test2(): void {console.log(没有返回值的方法) }函数表达式/匿名函数 const test3 function(): number {return 1 }二、typescript 中 函数参数写法 1、typesc…...

ssm社区文化宣传网站源码和论文

ssm社区文化宣传网站源码和论文019 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 研究或设计的目的和意义: (一)研究目的: 通过本次课题能够将所学的Java编程知识以及Mysql数据库知…...

Go语言工程实践之测试与Gin项目实践

Go 语言并发编程 及 进阶与依赖管理_软工菜鸡的博客-CSDN博客 03 测试 回归测试一般是QA(质量保证)同学手动通过终端回归一些固定的主流程场景 集成测试是对系统功能维度做测试验证,通过服务暴露的某个接口,进行自动化测试 而单元测试开发阶段,开发者对单独的函数…...

排查docker无法启动问题

查看Linux系统操作日志(最后200行就可以排查): tail -200f /var/log/messages...

[C++ 网络协议] 套接字和地址族、数据序列

目录 1. 套接字 1.1 在Linux平台下构建套接字 1.1.1 用于接听的套接字(服务器端套接字) 1.1.2 用于发送请求的套接字(客户端套接字) 1.2 在Windows平台下构建套接字 1.2.1 Winsock的初始化 1.2.2 用于接听的套接字(服务器端套接字) 1.2.3 用于发送请求的套接字(客户端套…...

AI 绘画Stable Diffusion 研究(八)sd采样方法详解

大家好,我是风雨无阻。 本文适合人群: 希望了解stable Diffusion WebUI中提供的Sampler究竟有什么不同,想知道如何选用合适采样器以进一步提高出图质量的朋友。 想要进一步了解AI绘图基本原理的朋友。 对stable diffusion AI绘图感兴趣的朋…...

线程池满了如何处理

某天搬砖时遇到一个问题,我创建了一个线程池执行任务,刚开始的时候还是一切,结果第二天发现有些任务没有正常执行。一看日志才发现是高峰期时线程池给我占用慢了,任务被丢掉了。 ​ 举个例子,我创建了一个线程池&#…...

Java多线程编程中的线程间通信

Java多线程编程中的线程间通信 基本概念: ​ 线程间通信是多线程编程中的一个重要概念,指的是不同线程之间如何协调和交换信息,以达到共同完成任务的目的。 线程间通信的目的 ​ 是确保多个线程能够按照一定的顺序和规则进行协作&#xff…...

write javaBean error, fastjson version 1.2.76

fastjson JSON.toJSONString 报错: > [0] JavaBeanSerializer.java->541: com.alibaba.fastjson.serializer.JavaBeanSerializer->write()> [1] JavaBeanSerializer.java->154: com.alibaba.fastjson.serializer.JavaBeanSerializer->write()>…...

Tomcat的部署及优化(多实例和动静分离)

目录 绪论 1、tomact 1.1 核心组件 1.2 什么是 servlet 1.3 什么是 JSP? 1.4 Tomcat 功能组件结构 1.5 Tomcat 请求过程 2、Tomcat 服务部署 2.1 tomcat自身优化: 2.2 内核优化 2.3 jvm 2.3.1 jvm配置 2.3.2 Tomcat配置JVM参数 2.3.3 jvm优化 3、tom…...

品牌推广革新之道:海外网红与内容营销的融合

随着数字时代的来临,品牌推广的方式正在经历着革命性的变化。传统的广告手段逐渐失去了吸引力,而内容营销正成为品牌推广的新宠儿。尤其是海外网红的崛起,不仅改变了推广方式,更重新定义了品牌与消费者之间的互动关系。本文Nox聚星…...

【 BERTopic应用 02/3】 分析卡塔尔世界杯推特数据

摄影:Fauzan Saari on Unsplash 一、说明 这是我们对世界杯推特数据分析的第3部分,我们放弃了。我们将对我们的数据进行情绪分析,以了解人们对卡塔尔世界杯的感受。我将在这里介绍的一个功能强大的工具包是Hugging Face,您可以在…...

TypeScript教程(三)变量声明

一、变量声明 变量是一种使用方便的占位符,用于引用计算机内存地址,可以将变量看做存储数据的容器 命名规则: 1.变量名称可以包含数字和字母 2.除了下划线_和美元$符号外,不能包含其他特殊字符,包括空格 3.变量名…...

【数据结构】堆的实现,堆排序以及TOP-K问题

目录 1.堆的概念及结构 2.堆的实现 2.1初始化堆 2.2销毁堆 2.3取堆顶元素 2.4返回堆的大小 2.5判断是否为空 2.6打印堆 2.7插入元素 2.8堆的向上调整 2.9弹出元素 2.10堆的向下调整 3. 建堆时间复杂度 4. 堆的应用 4.1 堆排序 4.2 TOP-K问题 1.堆的概念及结构 …...

释放马氏距离的力量:用 Python 探索多元数据分析

一、说明 马哈拉诺比斯距离(Mahalanobis Distance)是一种测量两个概率分布之间距离的方法。它是基于样本协方差矩阵的函数,用于评估两个向量之间的相似程度。Mahalanobis Distance考虑了数据集中各个特征之间的协方差,因此比欧氏距…...

【不限于联想Y9000P电脑关盖再打开时黑屏的解决办法】

不限于联想Y9000P电脑关盖再打开时黑屏的解决办法 问题的前言问题的出现问题拟解决 问题的前言 事情发生在昨天,更新了Win11系统后: 最惹人注目的三处地方就是: 1.可以查看时间的秒数了; 2.右键展示的内容变窄了; 3.按…...

策略模式实战应用

场景 假设做了个卖课网站,会员等级分为月vip、年vip、终生vip,每个等级买课的优惠力度不一样,传统的写法肯定是一堆的 if-else,现在使用策略模式写出代码实现 代码实现 策略模式的核心思想就是对扩展开放,对修改关闭…...

JAVA集合-Map

// 【Map】:双列集合,键值对形式存储,映射关系(kay,value) // 实现:HashMap // 子接口:SortedMap Map的子接口 // 实现类:TreeMap // HashMap // 1。可以插入null // …...

利用Simulink Test进行模型单元测试 - 1

1.搭建用于测试的简单模型 随手搭建了一个demo模型MilTestModel,模型中不带参数 2.创建测试框架 1.模型空白处右击 测试框架 > 为‘MilTestModel’创建 菜单 2.在创建测试框架对话框中,点击OK,对应的测试框架MilTestMode_Harness1就自动…...

深入探讨代理技术:保障网络安全与高效爬虫

1. Socks5代理与IP代理的区别与应用 Socks5代理和IP代理是代理技术中的两个重要方面,它们有着不同的特点和应用场景。Socks5代理是一种协议,支持TCP和UDP流量传输,适用于需要实时数据传输的场景,例如在线游戏或实时通信应用。而I…...

Qwen2-VL-2B-Instruct一键部署教程:Ubuntu 20。04环境快速搭建

Qwen2-VL-2B-Instruct一键部署教程:Ubuntu 20.04环境快速搭建 想试试这个能看懂图片还能跟你聊天的AI模型吗?Qwen2-VL-2B-Instruct是个挺有意思的多模态模型,不仅能处理文字,还能理解图片内容,进行对话。今天咱们就来…...

提升无线传输性能:手把手教你优化Si4463的Data Rate配置与SPI通信稳定性

突破Si4463无线传输瓶颈:从寄存器配置到SPI时序的全链路优化实战 当你的无线模块能够通信但性能不尽如人意时,就像驾驶一辆引擎未调校的跑车——它能跑,但永远达不到理想的极速。Si4463作为工业级无线收发芯片,其默认配置往往无法…...

YamlDotNet缓冲区反序列化:提升大数据集处理性能的终极指南

YamlDotNet缓冲区反序列化:提升大数据集处理性能的终极指南 【免费下载链接】YamlDotNet YamlDotNet is a .NET library for YAML 项目地址: https://gitcode.com/gh_mirrors/ya/YamlDotNet YamlDotNet是一款功能强大的.NET库,专为YAML数据处理设…...

SenseNova-SI-1.5:8B参数大模型空间智能新突破

SenseNova-SI-1.5:8B参数大模型空间智能新突破 【免费下载链接】SenseNova-SI-1.5-InternVL3-8B 项目地址: https://ai.gitcode.com/SenseNova/SenseNova-SI-1.5-InternVL3-8B 导语 SenseNova-SI-1.5-InternVL3-8B大模型正式发布,以8B轻量化参数…...

多源数据驱动的农害预测模型

基于多源数据与集成学习的农作物病虫害预测及防控优化模型 标签:农业AI 机器学习 XGBoost LSTM Stacking SHAP 遗传算法 风险建模 一、整体技术路线概览 我们构建了一个五层递进式智能决策系统,从原始数据到最终可解释的防控建议,层层…...

KingbaseES V8R6备份还原踩坑实录:sys_dump、sys_restore和ksql到底怎么选?

KingbaseES V8R6备份还原实战指南:工具选型与典型问题解析 第一次接触KingbaseES V8R6的备份还原工作时,面对sys_dump、sys_restore和ksql这三个工具,我像大多数新手一样陷入了选择困难。记得那次紧急数据迁移任务,当我信心满满地…...

嵌入式工程师的中年危机与转型策略

1. 嵌入式工程师的中年危机:一个行业的缩影44岁的梧桐,一位拥有21年嵌入式开发经验的资深架构师,在2023年的寒冬里收到了人生第一封解约通知书。这个场景让我想起公司上周的招聘会——38岁的候选人简历被默默放进了"待定"文件夹&am…...

【OpenClaw从入门到精通】第55篇:上海人工智能实验室SafeClaw深度解析——内生式安全的三大支柱(2026实测版)

摘要:2026年OpenClaw安全审计报告显示,其34个测试场景安全通过率仅58.9%,36.4%的内置技能存在高风险,提示词注入、沙箱逃逸等威胁突出。上海人工智能实验室推出的SafeClaw平台,以“内生式安全”颠覆传统“外挂式隔离”,构建模型安全、过程安全、输出安全三重防火墙。本文…...

小白必看|2026学生党论文神器推荐:自动排版+AI润色,告别熬夜改格式

论文小白陷入“写论文易,改格式难”的困境:明明正文已经定稿,却要花数天时间抠封面格式、调页眉页脚、改目录编号、整理论文参考文献,哪怕一个行距、一个字体不符合学校要求,都要全部推翻重改;好不容易排完…...

跨设备同步:OpenClaw+千问3.5-9B多终端配置指南

跨设备同步:OpenClaw千问3.5-9B多终端配置指南 1. 为什么需要跨设备同步OpenClaw配置 去年冬天,我在MacBook Pro上配置了一套基于OpenClaw千问3.5-9B的自动化工作流,用于处理日常的文档整理和会议纪要生成。但当我想在家用Windows台式机上继…...