Typescript总结(三)——函数类型详解

article/2025/9/16 19:23:07

本篇博客主要总结一下在Typescript中的函数写法,以及函数类型的总结。

一、Typescript的函数类型

如果在一个函数中,需要传入一个函数作为参数,可以如下所示,进行声明定义。
在这里插入图片描述
我们也可以通过type来定义函数类型
在这里插入图片描述
如上述代码所示,( num1:number, num2: number ) => void就表示函数类型,并且此时需要传入两个参数,并且两个都是number类型,返回值也为number类型。在一些语言中num1num2是可以不传的,但是在typescript中是不行的。
在这里插入图片描述
如果不传,则代码为(number, number) => void,表示为两个参数都是number(此时会报错,因为形参重复),并且两个参数的类型均为any类型。

二、参数的可选类型

在这里插入图片描述
如上图所示,此时我们在第二个参数y使用?表示其为可选类型,此时表示y的参数的值可以为number类型,也可以是undefined类型。此时我们需要注意的是:可选类型参数需要在必须类型的后面。
在这里插入图片描述
此时如果在可选参数的后面,就会报错。

三、函数参数的默认值

在这里插入图片描述
如上图所示,此时我们可以给函数参数设置一个默认值,也就是直接在后面加上=赋值即可,当函数没有传入值,或者传入的是undefined值时,就会使用默认值类型。当我们传入null时,就会发生报错。

四、剩余参数

js中一样,ts中也存在剩余参数,我们可以使用...来收集参数。下面是一个求和的例子。
在这里插入图片描述

五、typescript中的this

在ts中的this指向也是和在js中是一致的,关于在js中的this指向问题可以查看js中的this详解。
在这里插入图片描述
不确定的this指向
在这里插入图片描述
如上图所示,此时代码会报错,虽然说我们将该函数通过info对象来调用,但是,该函数处于外部环境,很有可能被其他对象所调用,如果其他对象不存在name属性,此时就会报错。所以ts为了安全,直接在info执行的时候报错所以一般我们在一个函数中使用到this的话,应该在函数中指定this的类型

在这里插入图片描述
如上述代码所示,我们通过给sayHello指定this的类型为{name:string},就可以调用了。
在这里插入图片描述
如图所示,如果不存在name属性,则直接就会报错。
ts也支持显示绑定
在这里插入图片描述
ts支持隐式绑定
在这里插入图片描述

六、函数的重载

我们首先先看一个例子
在这里插入图片描述
如上图所示我们指定paramsType类型为number类型或者string类型,但是当我们返回值时,显示操作符不能作用域paramsType类型的数据。
在这里插入图片描述
可以使用如上代码解决:但是存在两个问题:
1、需要写的一些逻辑判断
2、函数返回值无法确定类型
此时我们可以使用函数的重载
一般我们需要编写两个或者两个以上的重载签名,然后再编写重载函数来实现。
在这里插入图片描述
在重载中实现函数是不能被调用的
在这里插入图片描述
联合类型和重载函数小案例
我们想要实现传入一个数组或者一个字符串,此时可以返回数组或者字符串的长度。
联合类型实现:
在这里插入图片描述
重载实现
在这里插入图片描述
两者比较的话,我们发现使用联合类型较为简单一些,如果能够使用联合类型来解决的话,可以使用联合类型解决,如果不能,比如说返回值类型不同,我们可以使用重载来解决


http://chatgpt.dhexx.cn/article/goOTWjwT.shtml

相关文章

c语言函数返回值类型必须,C++中函数类型与定义的函数返回值类型必须相同么?...

C++中函数类型与定义的函数返回值类型必须相同么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C++中函数类型与定义的函数返回值类型必须相同么? 1.可以。只要返回值、参数列表的参数个数、类型、顺序中的一…

C语言 函数类型

1. 在 [不完全类型] 一文中,描述了C中的3大数据类型,即: 函数类型、对象类型和不完全类型, 这里再次引用这张图来进行“函数类型”的讲解。 可以看到,函数类型是对立于其他的类型的,它不像“对象类型和不完全类型”,可以延伸(或是派生)出其他对象,或是包含一子系列…

函数高级

函数: 1、引用传递 2、可变参数、命名参数、万能参数 3、匿名函数(lambda) 4、闭包(有点难) 5、递归 6、偏函数 7、函数作为参数传递 8、函数调用全局变量 9、全局变量和局部变量 装饰器(函数的深层次使用…

68 4种函数类型

文章目录 1、无参数,无返回值的函数2、无参数,有返回值的函数3、有参数,无返回值的函数4、有参数,有返回值的函数5、小结 函数根据有没有参数,有没有返回值,可以相互组合,一共有4种 无参数&…

C语言函数之—函数的分类

目录 1. 函数是什么? 2. C语言中的函数分类 2.1 库函数 2.1.1 为什么会有库函数? 2.1.2 那怎么来学习库函数呢? IO函数—getchar() , putchar() 字符串操作函数—strcmp() , strlen() rand函数,srand函数 和time函数 2.1.3 如何学会…

torch.optim.Adam() 函数用法

Adam: A method for stochastic optimization Adam是通过梯度的一阶矩和二阶矩自适应的控制每个参数的学习率的大小。 adam的初始化 def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8,weight_decay=0, amsgrad=False): Args:params (iterable): iterable o…

pytorch ——torch.optim.Adam

class torch.optim.Adam(params, lr0.001, betas(0.9, 0.999), eps1e-08, weight_decay0)它在Adam: A Method for Stochastic Optimization中被提出。(https://arxiv.org/abs/1412.6980) 参数: params (iterable) – 待优化参数的iterable或者是定义了参数组的dict…

在ADS中使用OPTIM优化设计

在ADS中可以使用OPTIM控件来对电路变量进行优化设计,以实现电路性能目标。ADS常用的S参数仿真和谐波平衡仿真中都可以进行优化设计。 在S参数仿真中进行优化设计 现在以一个阻抗匹配网络的设计为例,来展示在S 参数仿真中进行优化设计的方法。 我们搭建…

torch.optim.SGD()

其中的SGD就是optim中的一个算法(优化器):随机梯度下降算法 PyTorch 的优化器基本都继承于 "class Optimizer",这是所有 optimizer 的 base class torch.optim是一个实现了各种优化算法的库。大部分常用的方法得到支持…

torch.optim.lr_scheduler:调整学习率

本文是笔者在学习cycleGAN的代码时,发现其实现了根据需求选择不同调整学习率方法的策略,遂查资料了解pytorch各种调整学习率的方法。主要参考:https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate 1 综述 1.1 lr_sche…

一起来学PyTorch——torch.nn优化器optim

在学习的过程中,大家可能会感觉很蒙,其实现在做的就是看懂每一个小内容,等之后做一个具体的项目,就可以串联起来了。 优化器用于优化模型,加速收敛。 SGD方法 随机梯度下降法,是指沿着梯度下降的方向求解极…

Pytorch之Optim(优化器)

使用优化器,接收损失函数的结果,并调整网络参数,完成反向传播 根据示例 optimizer torch.optim.SGD(module.parameters(), lr0.01, momentum0.9) 然后根据提示,清空梯度>网络前传>计算损失>反向传播>优化网络参数 在运行区域引入库和之前的Module if __name__ …

torch.optim

torch.optim是一个实现了各种优化算法的库。 1. 如何使用optimizer 我们需要构建一个optimizer对象。这个对象能够保持当前参数状态并基于计算得到的梯度进行参数更新。 1.1 构建 为了构建一个Optimizer,你需要给它一个包含了需要优化的参数(必须都是…

torch.optim.lr_scheduler.CosineAnnealingWarmRestarts、OneCycleLR定义与使用

torch中有多种余弦退火学习率调整方法,包括:OneCycleLR、CosineAnnealingLR和CosineAnnealingWarmRestarts。 CosineAnnealingWarmRestarts(带预热的余弦退火)学习率方法定义 torch.optim.lr_scheduler.CosineAnnealingWarmRest…

torch.optim优化算法理解之optim.Adam()

torch.optim是一个实现了多种优化算法的包,大多数通用的方法都已支持,提供了丰富的接口调用,未来更多精炼的优化算法也将整合进来。 为了使用torch.optim,需先构造一个优化器对象Optimizer,用来保存当前的状态&#x…

Python-torch.optim优化算法理解之optim.Adam()

目录 简介 分析 使用 Adam算法 参数 论文理解 torch.optim.adam源码理解 Adam的特点 转载torch.optim优化算法理解之optim.Adam() 官方手册:torch.optim — PyTorch 1.11.0 documentation 其他参考 pytorch中优化器与学习率衰减方法总结 Adam和学习率衰减…

R 语言 optim 使用

stats中的optim函数是解决优化问题的一个简易的方法。 Univariate Optimization f function(x,a) (x-a)^2 xmin optimize(f,interval c(0,1),a1/3) xminGeneral Optimization optim函数包含了几种不同的算法。 算法的选择依赖于求解导数的难易程度,通常最好提…

PyTorch基础(六)-- optim模块

PyTorch的optim是用于参数优化的库(可以说是花式梯度下降),optim文件夹主要包括1个核心的父类(optimizer)、1个辅助类(lr_scheduler)以及10个常用优化算法的实现类。optim中内置的常用算法包括a…

pytorch基础(四):使用optim优化函数

文章目录 前言一、问题描述二、官方文档代码三、optimizer的工作原理总结 前言 本系列主要是对pytorch基础知识学习的一个记录,尽量保持博客的更新进度和自己的学习进度。本人也处于学习阶段,博客中涉及到的知识可能存在某些问题,希望大家批评…

HTTP协议之GET与POST区别

GET和POST是HTTP请求的两种基本方式,对于这两种请求方式的区别,只要是接触过Web开发的就能说出一二:GET把参数包含在URL中,POST通过正文传参! 而我想深入了解以下的时候,就去了w3cschool,这是w…