TypeScript 函数类型 (二)

函数类型

函数有两种方式定义

  • function 关键字来定义函数
function a(){}
  • 表达式定义(箭头函数的形式)
const a=()=>{}

函数需要定义类型的有三个地方 入参返回值 以及 函数本身 的类型, 函数本身的类型常用于表达式定义的函数

function sum(a:string,b:string):string{return a+b
}
let sum1 = (a:string,b:string): string => {return a+b
}type sum1Type = (a:string,b:string)=> string
let sum2: sum1Type = (a:string,b:string): string => {return a+b
}

类型推导

根据返回值类型推导

function f(a:string,b:string) {return a+b
}

在这里插入图片描述

根据上下文推导,根据位置来进行推导,也就是 x 对应入参 a 的类型,y对应b的类型,

type ISum = (x:string,y:string)=> string;
let sum3:ISum = (a,b) => {return a+b
}

在这里插入图片描述
入参数量可以比类型中的数量少,更具位置一一对应,但是不能多

函数返回类型

函数返回类型可以为void,意思为不校验返回值,在某些时候函数有没有返回值是没有意义的。

type ICallback = (a:string,b:number)=> void
function fn(callback:ICallback) {}
fn((a,b) => {return '1'
})

在这里插入图片描述

函数可选参数

在入参后面增加?,可以将这个入参变为可选,但是只能用在入参最后。

let sum4 = (a:string,b:string,c?:string):string => {return a+b
}
sum4('3','7')

在这里插入图片描述

函数剩余参数

剩余运算符 ...,可以传入不指定数量的参数

let total = (a:string,b:string,...rest:string[]): string => {return a+b+rest.join('')
}
total('1','2','3','4','5')

在这里插入图片描述

获取类型的内置方法

  • typeof 获取变量类型
let person = {name: '123',age: 123
}
type PersonType = typeof person

在这里插入图片描述

  • keyof 获取索引类型只能查询类型
type PersonKeyType = keyof typeof person

在这里插入图片描述

ts中this需要手动指定。默认是函数的第一个参数

let person = {name: '123',age: 123
}
type PersonType = typeof person
type PersonKeyType = keyof typeof person
function getV(this: PersonType, key: PersonKeyType ) {return this[key]
}
let r = getV.call(person, "name")

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

函数重载

重载 根据不同的参数类型做不同处理,一般这个参数类型是有限的。ts中的重载是伪重载,只是类型重载,不是逻辑重载

function toArray(value: string | number){if (typeof value ==='string') {return value.split('')}if (typeof value === 'number') {return value.toString().split('')}
}
let arr = toArray('123')

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【低照度图像增强系列(8)】URetinex-Net算法详解与代码实现(2022|CVPR)

前言 ☀️ 在低照度场景下进行目标检测任务,常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题,给检测带来一定的难度。 🌻使用图像增强模块对原始图像进行画质提升,恢复各类图像信息,再使用目标检…

Word参考文献交叉引用

前言 Word自带交叉引用功能,可在正文位置引用文档内自动编号的段落,同时创建超链接,适用于参考文献的引用。使用此方法对参考文献进行引用后,当参考文献的编号发生变化时,只需要更新域即可与正文中的引用相对应。下文…

实习随笔【实现Json格式化与latex渲染】

【写在前面】在实习中,遇到了如下需求: 待格式化数据大概长这样,里面存在Json乱码以及由$$包裹的公式 目标格式: 一、Json格式化 我们这里的任务主要分为两部分: 解析一个可能包含嵌套的 JSON 字符串格式化 JSON 对象…

这个工具居然能让你的微信暴露得一览无余!!

今天在github看到一个不错的项目,叫做wx-dump-4j,不看不知道,一看吓一跳,这个工具完全的解析了我的微信!这个工具准确显示好友数、群聊数和当日消息总量,并且!!这个工具提供过去15天…

冷却塔的选型计算介绍

1 冷却塔补水量计算 冷却塔补水蒸发量排污量飘散损失泄漏量。一般冷却塔内水份的蒸发量约为进水量的1~2.5%。 (1)蒸发量 总冷却循环水量的蒸发量E C ① 冷却蒸发量 E E=72Q(X1–X2)=L △t/600 E : 蒸发…

【C++题解】1154. 数组元素的查找

问题:1154. 数组元素的查找 类型:数组找数 题目描述: 给你 m 个整数,查找其中有无值为 n 的数,有则输出该数第一次出现的位置,没有则输出 −1 。 输入: 第一行一个整数 m 代表数的个数 ( 0≤m≤100 ) 。…

数据结构-C语言-排序(2)

代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序) 1.2-排序分…

Ubuntu 22.04.4 LTS (linux) 安装iftop 监控网卡流量 软件

1 安装iftop sudo apt update sudo apt-get install iftop 2 监控网卡 sudo iftop -i eth0 -n -p 界面最上面&#xff0c;显示的是类似刻度尺的刻度范围&#xff0c;显示流量图形的长条作标尺用的。 中间的< >这两个左右箭头&#xff0c;表示的是流量的进出方向.TX&…

SQL Server的视图

SQL Server的视图 一、基础 SQL 视图&#xff08;Views&#xff09;是一种虚拟表&#xff0c;是基于 SQL 查询结果生成的。这些虚拟表可以包含来自一个或多个表的数据&#xff0c;并且可以像表一样查询&#xff1b;视图是一个表中的数据经过某种筛选后的显示方式&#xff0c;或…

3D数字孪生项目运行卡顿,来看看它要求的电脑配置。

有些小伙伴和我说&#xff0c;数字孪生项目运行卡顿&#xff0c;不知道啥原因&#xff0c;根源还是这类项目是浏览器渲染&#xff0c;对电脑配置要求很高。 运行3D数字孪生项目需要一台性能强大的电脑&#xff0c; 以下是一个推荐的配置清单&#xff1a; 1. 处理器&#xff1…

百度人脸识别Windows C++离线sdk C#接入

百度人脸识别Windows C离线sdk C#接入 目录 说明 设计背景 • 场景特点&#xff1a; • 客户特点&#xff1a; • 核心需求&#xff1a; SDK 包结构 效果 代码 说明 自己根据SDK封装了动态库&#xff0c;然后C#调用。 功能接口 设计背景 • 场景特点&#xff1a; -…

中国姓名学大师排行榜,山东济南最有名的起名大师是谁

在2024年揭晓的中国姓名学领域&#xff0c;一场声势浩大的评选活动吸引了无数目光——寻找国内最杰出的起名大师。在这场激烈的竞争中&#xff0c;山东济南的颜廷利教授以其深厚的易学功底和卓越的命名技艺&#xff0c;荣获“中国姓名学十大权威专家”榜首位置&#xff0c;成为…

nftables(7)集合(SETS)

简介 在nftables中&#xff0c;集合&#xff08;sets&#xff09;是一个非常有用的特性&#xff0c;它允许你以集合的形式管理IP地址、端口号等网络元素&#xff0c;从而简化规则的配置和管理。 nftables提供了两种类型的集合&#xff1a;匿名集合和命名集合。 匿名集合&…

php相关

php相关 ​ 借鉴了小迪安全以及各位大佬的博客&#xff0c;如果一切顺利&#xff0c;会不定期更新。 如果感觉不妥&#xff0c;可以私信删除。 默认有php基础。 文章目录 php相关1. php 缺陷函数1. 与2. MD53. intval()4. preg_match() 2. php特性1. php字符串解析特性2. 杂…

注册安全分析报告:OneApm

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

[Vulnhub] digitalworld.local-JOY snmp+ProFTPD权限提升

信息收集 IP AddressOpening Ports192.168.101.150TCP:21,22,25,80,110,139,143,445,465,587,993,995 $ nmap -p- 192.168.101.150 --21,22,25,min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD | ftp-anon: Anonymous FTP logi…

idea中使用maven

默认情况下&#xff0c;idea会自动下载并安装maven&#xff0c;这不便于我们管理。 最好是自行下载maven&#xff0c;然后在idea中指定maven的文件夹路径

对服务器进行基本了解(二)

目录 一. 云服务器数据库 1.查看MYSQL版本 2.查看mysql的运行状态 3.运行mysql 4. 进入mysql的用户 5. 更改用户密码 6. 查找mysql端口号 7. 创建一个数据库 8. 查看用户 9. 查看数据库 10. 显示数据库的表 11. 修改用户的host 12. 对用户赋权 13. 开放指定端…

TF/SD卡开发驱动(SPI)

TF与SD卡本质上来说都是flash类型的存储器 可以理解为TF卡是SD卡的升级版&#xff0c;体积小功能强大&#xff0c;SD卡是传统意义上的存储卡&#xff0c;适用范围比较广&#xff0c;而SD卡的驱动方式有两种 SDIO 和 SPI&#xff0c;同理TF卡也是一样 &#xff08;在资源足够…

TCP与UDP的理解

文章目录 UDP协议UDP协议的特点UDP的应用以及杂项 TCP协议TCP协议段格式解释和TCP过程详解确认应答机制 -- 序号和确认序号以及6位标志位中的ACK超时重传机制连接管理机制 与标志位SYN,FIN,ACK滑动窗口流量控制拥塞控制延迟应答捎带应答和面向字节流粘包问题TCP异常情况TCP特点…