TypeScript中,如何利用数组生成一个联合类型

news/2024/7/5 7:42:12/文章来源:https://www.cnblogs.com/chatrun/p/18279619

本文由 ChatMoney团队出品
在开发中我们常常会遇到这样一个问题,代码如下:

const arr = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
];const func = (str) => {// ...
}

我们想要传入一个参数到str,而且这个参数必须是arr数组中的某一个元素,这时我们希望的是可以直接得到这个arr的联合类型,接下来一般我们会使用传统的方法去声明类型,如下:

type Strs = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z";const func = (str: Strs) => {// ...
}

先不说这样的写法很笨,写的时候就已经很ex了,我们希望的是Strs可以根据上面arr的值来自动生成一个联合类型,这时我们可以有一个技巧来解决这个问题,就是先将str转换为元组:

const arr = ["a","b","c",// ...
] as const;

没转换前arr的类型为string[]:

转换成元组后:

然后我们就可以使用typeof来生成一个联合类型:

最后我们给入参定义这个类型:

最后大功告成😎。
关于我们
本文由ChatMoney团队出品,ChatMoney专注于AI应用落地与变现,我们提供全套、持续更新的AI源码系统与可执行的变现方案,致力于帮助更多人利用AI来变现,欢迎进入ChatMoney获取更多AI变现方案!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比

Kolmogorov Arnold Networks (KAN)最近作为MLP的替代而流行起来,KANs使用Kolmogorov-Arnold表示定理的属性,该定理允许神经网络的激活函数在边缘上执行,这使得激活函数“可学习”并改进它们。 目前我们看到有很多使用KAN替代MLP的实验,但是目前来说对于图神经网络来说还没有…

修改yum安装的php的启动用户

在使用yum安装php时,默认情况下,安装完成后php的启动用户是apache 1、编辑php-fpm的配置文件。在大多数Linux系统中,php-fpm的配置文件路径为/etc/php-fpm.d/www.conf。 2、找到配置文件中的`user`和`group`项。默认情况下,`user`的值是apache,`group`的值是apache,即php…

Vue预渲染prerender-spa-plugin+vue-meta-info

前言: 公司现有一个新需求需要在原有的vue2项目上面进行预渲染,进行SEO的优化,在网上进行了一系列的搜索,发现两种简单易上手的方案(1.使用prerender-spa-plugin+vue-meta-info进行打包构建;2.使用nuxt.js在开发过程中就渲染呈现出来) 因是在原有项目基础上进行,所以采…

禅道的使用:如何搭建Ubuntu环境安装禅道

一、禅道安装部署的环境要求 1.禅道安装部署环境推荐使用 Linux + Apache + PHP7.0以上版本+ MySQL5.5以上版本/MariaDB的组合。Nginx其次,不推荐IIS + PHP组合。 2.禅道需要使用PHP的这些扩展:pdo、pdo_mysql、json、filte、openssl、mbstring、zlib、curl、gd、iconv,企业…

vue3.4+最新属性变化

Attribute绑定 新增简写方法 <!-- 与 :id="id" 相同 --> <div :id></div><!-- 这也同样有效 --> <div v-bind:id></div>动态参数 <a v-bind:[demoName]="url"></a>//简写 <a :[demoName]="url&qu…

【Modelsim常见问题】Error: (vsim-3170) Could not find

这个错误发生的原因通常是测试的tb文件模块名和文件名不一致导致,参考如下:

易基因:番茄果实采后处理成熟诱导的DNA甲基化和转录组综合分析 | 作物研究

番茄果实成熟是一个复杂的生理过程,涉及关键基因的去甲基化,改变其转录水平,从而触发一系列生理事件。然而果实采摘后的处理方法,如冷藏、化学处理等,虽然能延长番茄的货架寿命,但通常可能会降低果实品质,目前尚不清楚这些过程是如何改变的。因此,研究采后处理诱导的番…

BPI-M4 Berry USB测试

连接USB鼠标或键盘测试 1、将USB接口的键盘和鼠标插入开发板的USB接口中 2、开发板连接HDMI显示器,并通电启动 3、如果鼠标或键盘能正常操作系统说明USB接口使用正常(鼠标只有在桌面版的系统中才能使用) 连接USB存储设备测试 1、首先将U盘或者USB移动硬盘插入开发板的USB接口…

mac M1 安装miniconda3

进入国内大学镜像库下载安装包https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda 下载包打开终端,开始安装 1、执行命令: bash Miniconda3-latest-MacOSX-arm64.sh 2、输入回车后,阅读文件,输入:q 退出文件 3、输入yes开始安装 4、输入回车选择安装路径- 默认路径…

BPI-M4 Berry 蓝牙调试

通过命令行连接蓝牙 1、首先,确定设备是否有蓝牙设备。输入hciconfig 如果镜像没有则使用下面命令进行安装sudo apt install bluez 2、可以看到有一个hci0的蓝牙设备,接下来就开始连接其他蓝牙设备sudo bluetoothctlpower on #打开蓝牙网卡 devices #列出蓝牙网卡已经配…

win10 php_imagick 扩展的安装

http://www.hzhcontrols.com/new-1729990.html本篇文章介绍的内容是关于win10_php_imagick 扩展的安装,现在分享给大家,有需要的朋友可以参考一下 PHP_imagick 这个扩展是我迄今为止遇到最难安装的扩展主要问题在于正确的文档太少, 今天终于是把这个扩展安装好了. 下面分享一…

BPI-M4 Berry以太网口和WiFi测试

以太网口测试 1、首先将网线的一端插入M4Berry的以太网接口,另一端接入路由器,并确保网络是畅通的。 2、系统启动后会通过DHCP自动给以太网卡分配IP地址。可以输入以下命令查看ip:ifconfig或者ip a 可以看到eth0获取到了10.1.1.207的ip地址 接下来,ping一下百度测试网络是否…

BPI-M4 Berry创建热点和设置静态IP

create_ap是一个帮助快速创建Linux上的WIFI热点的脚本,并且支持bridge和NAT模式,能够自动结合hostapd, dnsmasq和iptables完成WIFI热点的设置,避免了用户进行复杂的配置,github地址如下: https://github.com/oblique/create_ap 使用NET模式创建AP 1、首先使用 ls /sys/cla…

BPI-M4 Berry 远程连接开发板

使用SSH远程 1、需要使用到软件mobaxterm,请前往官网(https://mobaxterm.mobatek.net/download.html?spm=wolai.workspace.0.0.768c378fz9RNFi)进行下载 2、将开发板启动,并使用网线连接路由器,或者与你的电脑连接。 打开mobaxterm。点击左上角的"session"图标…

BPI-M4 Berry自动登陆及关闭桌面

3-1 BPI-M4 Berry自动登陆及关闭桌面此方法仅适用BPI-M4Berry的ubuntu和debian系统系统默认登录账号,密码当开发板启动完成,输入账号密码即可登录。由Banana Pi提供的镜像,默认账号/密码分别是root/bananapi和pi/bananapi。(输入密码时是不可见的,输入时注意别输入大写字母…

PART1-Oracle关系数据结构

2. Oracle关系数据结构 2.1. 表和表簇 2.1.1. 模式对象简介 数据库模式是数据结构的逻辑容器,这些数据结构称为模式对象。模式对象的例子有表和索引。模式对象是通过 SQL 创建和操作的。 一个数据库用户拥有密码和各种数据库权限。每个用户拥有一个与其同名的模式。模式包含了…

ros - slam - 电机控制之速度控制实验

前面说到通过控制对应的IO上的PWM占空比即可完成对电机速度的控制。关于PWM的介绍在ROS2硬件控制篇的舵机控制中已经介绍过了,所以我们知道通过改变PWM的占空比可以实现对输出电压的大小调节。占空比越大,输出电压越高;占空比越小,输出电压越低。接着我们通过一个实验来验证…

BPI-M4 Berry在windows系统下连接串口调试

串口线 我手头的串口线是这样的,包含如下四个针脚:VCC、GND、TX、RX。串口针脚说明: 其他的串口线可能不止四根线,而且杜邦线的颜色也不一定和我的一样。 请看清楚接口标注,按照下面介绍,将其接到板子上对应的接口板子串口GNDGNDTXDRXDRXDTXD VCC是电源,可以不用接。有的…

智慧旅游不再难,免费可视化工具一键搞定!

在过去,复杂的数据分析软件和昂贵的服务费用让许多中小旅游企业望而却步。而今,免费可视化工具彻底改变了这一局面,今天要说的工具就是山海鲸可视化。它不仅功能强大,而且免费使用,大大降低了数据可视化的门槛,即便是资源有限的旅游企业或是个人也能轻松上手。在这个数据…