首页 > 其他分享 >TS 小技巧: 使用元组生成联合类型

TS 小技巧: 使用元组生成联合类型

时间:2024-06-04 14:00:57浏览次数:15  
标签:blue const 技巧 TS value 元组 colors 类型 red

前言

在我们使用 TypeScript 开发业务的时候,也许你会遇到一个这样的问题:我们如何根据一个数组的值得到一个联合类型?
这里向大家介绍一个开发小技巧:使用元组生成联合类型

开发场景

我们看下面一段 ts 代码:

const colors = ['red','green','orange','blue']; // 这里 ts 解析的是 string[]

// 这里的 value 类型该如何标注,使它的值只能是 colors 中的值
const setColors = (value:?) => {
  console.log('value',value)
};

我们总不能手动去写成这样:

type Colors = 'red' | 'green' | 'orange' | 'blue';

这样显得我们很呆,我们应该根据 colors 自动生成一个联合类型,做法也很简单:

// 1. 先将 colors 转成元组类型,这里 ts 解析的是 readonly ["red", "green", "orange", "blue"]
const colors = ['red','green','orange','blue'] as const; 

// 2. 将元组类型转成联合类型
type Colors = typeof colors[number];

// 这里的 value 类型该如何标注,使它的值只能是 colors 中的值
const setColors = (value:Colors) => {
  console.log('value',value)
};

这样我们就可以完成 ts 的类型检查了:
在这里插入图片描述

标签:blue,const,技巧,TS,value,元组,colors,类型,red
From: https://blog.csdn.net/qq_36117388/article/details/139441164

相关文章

  • Conts7 安装Redis教程
    1.添加软件安装源yuminstalleple-release2.安装Redisyuminstallredis-y3.启动redissystemctlstartredis4.允许开机启动systemctlenableredis5.修改redis配置文件vim/ect/redis.conf修改2处文件(虚拟机)6.重启redissystemctlrestartredis7.登陆redis数......
  • LeetCode 1748. Sum of Unique Elements
    原题链接在这里:https://leetcode.com/problems/sum-of-unique-elements/description/题目:Youaregivenanintegerarray nums.Theuniqueelementsofanarrayaretheelementsthatappear exactlyonce inthearray.Return the sum ofalltheuniqueelementso......
  • 【技巧】JS代码这么写,前端小姐姐都会爱上你
    前言......
  • ChatTTS 如何安装可视化操作
    可视化一键安装下载地址:百度网盘DownloadfromGitHub从GitHub下载代码。gitclonehttps://github.com/2noise/ChatTTS下载地址InstallDependencies在开始之前,请确保已安装必要的软件包。如果您尚未安装它们,可以使用pip进行安装:pipinstalltorchChatTTSIm......
  • Bootstrap框架
    原文链接:https://blog.csdn.net/2301_80068547/article/details/134619359一、Bootstrap简介Bootstrap来自Twitter(推特),是目前最受欢迎的前端框架。Bootstrap是基于HTML、CSS和JavaScript的,它简洁灵活,使得Web开发更加快捷。中文官网:https://www.bootcss.com/官网:http......
  • Intensity Segments问题
    https://github.com/zongzw/intensity-segmentIntensitySegments问题,是一个动态规划问题,考察的是对数据结构的掌握程度,从各种不同的数据结构中选择适合问题的的那个。问题到代码的转化能力,如何使用计算机语言描述数据动态变化的过程。以上链接中,使用两种语言golang和javas......
  • ### Python 字典操作详解:从创建、增删改查到高级技巧全解析
    1.创建字典使用大括号{}创建空字典empty_dict={}print(empty_dict)#输出:{}使用dict函数创建字典#通过键值对创建字典person=dict(name="Alice",age=30,city="NewYork")print(person)#输出:{'name':'Alice','age':30,'c......
  • 记一次“有手就行”的从SQL注入到文件上传Getshell的简单过程
    0x01前台SQL注入漏洞原理SQL注入漏洞的原理是应用程序没有对用户输入进行充分的验证和过滤,导致攻击者可以在输入框中插入恶意的SQL代码。当应用程序将用户输入的数据拼接到SQL查询语句中时,攻击者插入的恶意代码也会被执行,从而绕过身份验证和访问控制,直接访问或修改数据库......
  • 一键云部署:资源编排 ROS 轻松部署文本转语音系统 ChatTTS
    ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。ChatTTSwebUI&API为ChatTTS提供了网页界面和API服务。资源编排服务(ResourceOrchestrationService,ROS)是阿里云提供基......
  • ### Python 列表操作详解:从创建、增删到高级技巧全覆盖
    1.创建列表使用list函数创建空列表:empty_list=list()print(empty_list)#输出:[]从字符串创建列表:string="hello"list_from_string=list(string)print(list_from_string)#输出:['h','e','l','l','o']......