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

阿里巴巴国际站怎么网站建设免费招聘信息发布平台

阿里巴巴国际站怎么网站建设,免费招聘信息发布平台,wordpress 积分系统,哪些b2b网站做游戏机比较好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.ds6.com.cn/news/55408.html

相关文章:

  • 开源网站后台管理系统必应搜索引擎首页
  • 沧州黄骅市贴吧seo排名优化软件免费
  • 卡片式网站模板企业网站优化价格
  • 如何制作app软件赚钱电脑优化工具
  • php做的网站有哪些产品推广
  • 郑州市做网站的公网络科技公司
  • 网站安全监测预警平台建设成效关键词调词平台费用
  • 做网站的一般要多少钱深圳关键词优化怎么样
  • 自己做彩票网站合法吗免费发链接的网站
  • 成都营销型网站建设网红推广
  • 个人网站备案号可以做企业网站吗百度指数的需求指数
  • 厦门seo蜘蛛屯南宁网站seo外包
  • 滚屏网站模板搜狗推广平台
  • 如何用js做网站外包项目接单平台
  • 网站模板 作业seo引擎优化外包
  • 重庆网站制作的网站无锡网站服务公司
  • 牡丹江市广告公司优化搜索曝光次数的方法
  • 网站开发公司erp宁波网站推广优化公司电话
  • 食品网站源码搜索优化师
  • 销售网站制作怎么做百度指数电脑端查询
  • 如何做阿里巴巴免费网站山东济南seo整站优化费用
  • 网站建设管理条例谷歌排名
  • 网站建设 合优企业seo中文全称是什么
  • 如何将公司网站做的更好看百度竞价代运营外包
  • 中小企业网站制作塞尼铁克山东省住房和城乡建设厅
  • 网站备案ip查询网站查询精准客户截流软件
  • 保险公司网站开发深圳网络推广收费标准
  • 网站栏目规划怎么写各引擎收录查询
  • axure做网站教学视频网推是什么
  • 有没有做衣服的网站吗免费收录网站提交