关于ts的keyof

2023-10-18 07:52
文章标签 ts keyof

本文主要是介绍关于ts的keyof,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

type props_type = {name: string,age: number
}const props: props_type = {name: 'tjq',age: 18
}for (const key in props) {
//props[key]出现红色波浪线const value = props[key];
}

在这里插入图片描述

why?

经过我查阅多方资料,在网上看到一个比较合适的例子
地址:地址

function get_value(key) {const obj = {name: 'tjq',age: 18}return obj[key]
}

上面是一段js代码,作用就是获取某个对象某个key对应的value。
现在有一种情况,假如我key传递的是’name’,该函数会返回’tjq’
但是如果我传递’sex’,该函数会返回undefined,因为我这个obj上压根没有sex属性,这种情况明显是违背ts规则的(明明没有存在却有返回值)
我们想要的是,当key存在时便返回key对应的value,当key不存在时直接报错

keyof作用

在上面这种情况下keyof就出现了。
因为我们想要限制键的类型,让他只能是某个键的类型,而不是随心所欲

Object.keys({name:'tjq',age:18})
//[name,age]

在js中我们用Object.keys()获取一个对象的key集合

在ts中我们可以用keyof获取一个对象的key类型集合

type props_type = {name: string,age: number
}let key :keyof props_type 
//此时key的类型就表示必须是上方的props_type 中key类型的一种

限制类型之后便可以正常遍历了

type props_type = {name: string,age: number
}const props: props_type = {name: 'tjq',age: 18
}
let key: keyof props_type
for (key in props) {
//props[key]红色波浪线消失const value = props[key];
}

这篇关于关于ts的keyof的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231250

相关文章

vue ts 本地缓存数据

vue ts 本地缓存数据 需求是:给每日最高热度的数据,每个用户弹窗三次,持续五秒 // 每日最高热度 弹窗三次const popupKey = 'dailyPopupCount_';const today = new Date().toISOString().split('T')[0]; // dailyPopupCount_2024-08-26const popupCount =

记录一个拖拽组件vue3+ts

记录一个拖拽组件vue+ts “vue”: “^3.0.0” “typescript”: “~4.1.5” 我这个是vue 3的最高版本,可以使用defineModel 父组件 <h1>props传值</h1><ModuleOrder v-model:orderList="orderList" v-model:defaultList="defaultList" ></ModuleO

【TS高频面试题】interface与type的区别

参考文章 一、基本概念 1. type(类型别名) 用来给一个类型起新名字,使用 type 创建类型别名。 2. interface(接口) 专门用于定义对象的结构(比如属性和方法) 二、相同点 (1)都可以描述对象或函数 interface interface User {name: stringage: number}interface SetUser {(name: st

【TS】类(class)学习

类(class)基础概念 类定义:学习如何定义一个类,包括类的属性和方法。构造函数:理解构造函数的作用和如何使用它来初始化对象。访问修饰符:学习 public、private 和 protected 修饰符,以及它们如何控制属性和方法的访问权限。继承:理解如何通过继承来扩展类,以及如何使用 super 关键字调用父类的方法和构造函数。静态属性和方法:学习如何定义和使用静态属性和方法,这些属性和方

vs2017 Qt CMakeList.txt添加生成Qt LinguistTools的ts文件

#Qt国际化生成ts文件set(TS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Resource/Translations")set(TS_FILES"${TS_DIR}/${PROJECT_NAME}_zh_CN.ts""${TS_DIR}/${PROJECT_NAME}_en.ts")find_program(LUPDATE_EXECUTABLE lupdate

Web前端 lucky-canvas【大转盘 九宫格 老虎机】抽奖插件(适用JS/TS、Vue、React、微信小程序、Uniapp和Taro)

Web前端 lucky-canvas 抽奖插件(JS/TS、Vue、React、微信小程序、Uniapp和Taro) 基于 JS + Canvas 实现的【大转盘 & 九宫格 & 老虎机】抽奖,致力于为 WEB 前端提供一个功能强大且专业可靠的营销组件,只需要通过简单配置即可实现自由化定制,帮助你快速的完成产品需求 自由配置 奖品 / 文字 / 图片 / 颜色 / 按钮均可自由配置;支持同步

ts 类型分类

目录 01 ts 相关指令 02 类型声明空间与变量声明空间 03 类型注解和类型推断 04 类型分类 , 联合类型与交叉类型 05 never类型  any类型 和unknown类型 01 ts 相关指令         全局安装 typescript 模块                 npm i -g typescript         安装完成之后 可以

TS 学习 (持续更新中)

如果我们在 ts 中写 不用运行就能在文件中报错 ts 是一种静态类型的检查 能将运行时出现的错误前置     一般不用 命令行编译   ts 转换成 js  将中文转码 tsc index(.ts)   输入命令生成 配置文件 能在中间进行 配置转换成 js 的哪个规范 es5 还是 6 和其它转换规范  做项目 用 vue react 都是用脚

Vue3 + Ts + Vite项目 websoket封装使用

文章目录 一、安装二、封装三、请求地址配置3.1 将接口地址放到 public3.2 引入 ipconfig.js 文件3.3 全局类型声明 四、页面使用4.1 引用4.2 注册 五、说明 一、安装 npm npm install websocket --save-dev pnpm pnpm install websocket --save-dev 二、

creator 物理引擎 骨骼动画 TS

物理引擎 cocos论坛 遇到坑: 1 不会发生碰撞:A无Collider碰撞组件. B未添加分组***重要 2 获取质量世界坐标=0? 弄了一天 3 碰撞回调函数不会调用;A 碰撞组件依附的节点下挂的脚本中有实现以下函数 B 开启enableContractListener 4 动态调整反弹力: 找不到函数,官网也找不到。setRestitution() 解决:断点看有哪些value和funct