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

河南营销型网站江苏优质网站制作公司

河南营销型网站,江苏优质网站制作公司,成都工装公司,wordpress适合做大型网站吗title: TypeScript类型体操:获取数组中元素对象属性的值作为新类型 date: 2023-03-03 20:58:24 categories: TypeScript类型体操 tags: TypeScript类型体操TypeScript 首先先说获取数组中元素对象属性的值作为新类型的解决方案 使用 as const 强调不可变数组使用 …

title: TypeScript类型体操:获取数组中元素对象属性的值作为新类型
date: 2023-03-03 20:58:24
categories: TypeScript类型体操
tags:

  • TypeScript类型体操
  • TypeScript

首先先说获取数组中元素对象属性的值作为新类型的解决方案

  • 使用 as const 强调不可变数组
  • 使用 typeof arr 获取数组类型
  • 使用 [number] 获取数组元素对象类型,这是关键![number]表示获取数组对象元素类型,数组对象的 keynumber 类型
  • 最后指定元素属性 key 即可
const arr = [{key: 'update',},{key: 'delete'}
]

特别的需要指定 update, delete 作为某一个类型提示

// 'delete' | 'update'
type OperationalKey = (typeof arr)[number]['key']

tips: 如果遇到不可变数组与可变数组的冲突,你可以选择保留可变数组,并使用解构获得新变量作为 as const

const iArr = [...arr] as const;
type OperationalKey = (typeof iArr)[number]['key']

详细介绍

遇到一个比较麻烦的问题,个人在项目中使用 TypeScript + Vue 的技术栈,当前的需求是给一个 Action 定义类型以获得类型提示,而这个 Action 内部有一个 key 属性,key 是一个字符串但是我希望仅限于某几个字符串。

const actions = [{key: 'add',...},{key: 'delete',},{key: 'update'}
]const onAction = (action: {key: string}) => {}

很明显,当我们直接使用 string 作为 key 的类型,我们只能具体看代码有哪些操作符,如果直接在 action: {key: type} 中重新写一遍字符串类型势必麻烦且不好维护,所以如何获取 actions 数组中元素对象的属性的值作为新类型就是我们要解决的问题。

对于一个对象,我们可以使用 keyof 来取出所有的属性并作为新类型返回,但是我们需要的是属性的值作为新类型,所以某一步操作必然是 ['key']

反过来看数组,如何获取数组元素类型?在经过一番查找后,发现使用 [number] 是符合要求的,JavaScriptnumber 类型索引一般是用户通过 push, unshift 等其他操作加入的数组,这么解释也许不正确,因为JavaScript数组是一个对象,而 JavaScript 的对象的 key 是字符串,详细可以看看 Array - JavaScript | MDN (mozilla.org),总的来说,通过非负数字访问数组是我们需要的结果,所以[number] 没有任何问题。

可以获取数组元素对象类型后,还必须要注意一点,数组必须是不可变的,通常用 as const 来修饰,如果数组可变,那么相关元素属性就可变便无法正确获取。

更好的解决方案

通常为了避免魔法数字,魔法字符串,也就是很难理解含义的一系列定义,我们会定义一些常量集合来确定,但有些时候觉得麻烦便可使用上述方法来确定类型。

其他

  • typescript 如何从数组的项中获取某个值作为类型? - SegmentFault 思否
  • TypeScript 类型体操:获取数组中元素对象属性的值作为新类型 | Az’s Blog (azin-cn.github.io)
  • TypeScript 类型体操:获取数组中元素对象属性的值作为新类型 | 一抹阳光& - CSDN
http://www.yayakq.cn/news/789508/

相关文章:

  • 怎么开通个人网站请人做网站设计的方案
  • 丰台企业网站建设wordpress登陆访问
  • 五指山网站开发价格保定手机网站制作
  • 企业网站计划书wordpress做双语网站
  • 济南市网站建设做网站珊瑚橙颜色怎么搭配好看
  • 网站的二维码怎么做网站建设咨询云尚网络
  • 个人网站的名称j2ee网站开发参考文献
  • 彩票网站搭建 做网站天津微信网站建设
  • 最好茶叶网站建设推广图片设计如何简洁好看
  • 校园网站建设培训体会厂家营销型网站建设
  • 延安免费做网站界面设计论文
  • 360网站做推广建站源码程序
  • 培训机构网站建设推广本地营销策划公司
  • 常用网站建设技术是什么意思苏州手机网站建设
  • 江宁城乡建设局网站建筑网校哪个比较好
  • 脉脉用的什么技术做网站为什么选php语言做网站
  • 网站建设平台报价长沙百度公司地址
  • 网站建设项目招标标书电商网站代码模板
  • win7下asp.net网站发布wap网站 开发
  • 建设生鲜网站价格深圳市哪里最繁华
  • 手机wap 网站做网站横幅技巧
  • 电子商务网站平台开发建设方案八大处做双眼预约网站
  • 凡科免费个人做网站有弊吗页面模板怎么添加文章
  • 嘉兴网站制作建设装修网站设计需求说明分析下载文档
  • 唐山市住房房和城乡建设厅网站住房与城乡建设部网站打不开
  • 网站建设及推广wordpress免费中文企业主题
  • 重庆綦江网站制作公司电话网站链接改名怎做301
  • 网站如何做淘宝支付品牌网站设计提案
  • 建设部勘察设计网站做旅游网站的产品经理如何
  • 做旅游网站的要求济宁网站建设专业定制