typescript的keyof的用法

news2025/1/27 8:33:21

第一种:与接口一起用,返回联合类型


interface Person {
    name: string;
    age: number;
    location: string;
  }

type K1=keyof Person; // "name" | "age" | "gender"
let a:K1='name'

第二种:与typeof一起用,可以返回对象key的联合类型,也可以和

const TIME_TYPE = {
    FIXED_TIME_RANGE: 'FIXED_TIME_RANGE',
    DYNAMIC_TIME_RANGE: 'DYNAMIC_TIME_RANGE',
  };
let a:keyof typeof TIME_TYPE  //'FIXED_TIME_RANGE'|'DYNAMIC_TIME_RANGE'


第三种:与类一起使用

class Person {
    name: string = "Semlinker";
    getInfo(){
        console.log(this.name)
    }
  }
  
  let sname: keyof Person=‘getInfo’

如果把getInfo写成getInfo1,则会 报下面的错误 

第四种:keyof也支持基本数据类型,如下

 

第五种:在泛型约束中使用类型参数

你可以声明一个类型参数,且它被另一个类型参数所约束。 比如,现在我们想要用属性名从对象里获取这个属性。 并且我们想要确保这个属性存在于对象obj上,因此我们需要在这两个类型之间使用约束。

function getProperty<T, K extends keyof T>(obj: T, key: K) {
    return obj[key];
}

let x = { a: 1, b: 2, c: 3, d: 4 };

getProperty(x, "a"); // okay
getProperty(x, "m"); //类型“"m"”的参数不能赋给类型“"a" | "b" | "c" | "d"”的参数。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

天梯赛练习(L2-013 ~ L2-020)

L2-013 红色警报 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序&#xff0c;当失去一个城市导致国家被分裂为多个无法连通的区域时&#xff0c;就发出红色警报。注意&#xff1a;若该国本来就不完全连通&#xff0c;是分裂的k个区域&#xff0c;而失去一…

【springcloud开发教程】负载均衡——Ribbon

Ribbon是什么&#xff1f; Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。简单的说&#xff0c;Ribbon 是 Netflix 发布的开源项目&#xff0c;主要功能是提供客户端的软件负载均衡算法&#xff0c;将 Netflix 的中间层服务连接在一起。Ribbon 的…

CentOS7安装docker以及docker-compose

前言 系统版本&#xff1a;CentOS7.9 docker版本&#xff1a;当前最新版本是23.0.3 docker compose版本&#xff1a;v2.17.2 参考官网文档&#xff1a;跳转链接 安装docker 删除原有的docker&#xff08;如果有的话&#xff09; sudo yum remove docker \docker-client …

CSAPPLab1-DataLab

1、bitXor 异或&#xff1a;不是同时为0和不是同时为1的情况进行按位与 /** bitXor - x^y using only ~ and &* Example: bitXor(4, 5) 1* Legal ops: ~ &* Max ops: 14* Rating: 1*/int bitXor(int x, int y) {return ~(~x & ~y) & ~(x & y); } …

可鉴别加密工作模式-同时保护数据机密性和完整性(OCB、CCM、KeyWrap、EAX和GCM)第一部分

当算法用于同时保护数据的机密性和完整性时&#xff0c;应选取合适的可鉴别加密工作模式&#xff0c;例如OCB、CCM、KeyWrap、EAX和GCM等工作模式。以下总结来自GBT36624-2018国标文本。 在可鉴别加密工作模式之前&#xff0c;先来说说分组密码的工作模式可参考GBT17964-2021版…

反欺诈(羊毛盾)API 实现用户行为分析的思路分析

简介 反欺诈&#xff08;羊毛盾&#xff09;API 是一种用于识别和防范各种欺诈行为的技术解决方案。它可集成到各种应用程序和平台中&#xff0c;通过手机号码、手机IP进行异常检测&#xff0c;达到防范恶意注册、虚假评论、虚假交易等欺诈行为的目的。 本文主要介绍反欺诈&a…

1677_MIT 6.828 xv6中增加CPU alarm

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 前面把课程要求做了一个简单的翻译&#xff0c;从课程的要求说明中其实已经能够得到很多的提示。这个alarm的功能&#xff0c;其实有点类似回调函数的概念&#xf…

基于springboot+mysql+jsp实现校园新闻发布系统

基于springbootmysqljsp实现校园新闻发布系统 一、系统介绍1、系统主要功能&#xff1a;2.涉及技术框架&#xff1a;3.本项目所用环境&#xff1a; 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能&#xff1a; 普通用户&#xff1a;浏览主页面&#xff…

【音视频处理】直播工作原理,直播CDN、推流拉流、流媒体服务究竟是什么

大家好&#xff0c;欢迎来到停止重构的频道。 本期我们讨论直播技术。 我们将会介绍&#xff0c;直播工作原理&#xff0c;流媒体服务的作用&#xff0c;推流/拉流、直播CDN等等。 这里需要特别说明的是&#xff0c;直播指的是&#xff1a;1对多的直播&#xff0c;平常直播平…

基于copula的风光联合场景生成与缩减

目录 1 主要内容 风光出力场景生成方法 2 部分程序 3 程序结果 4 程序链接 点击直达&#xff01; 1 主要内容 该程序方法复现《融合风光出力场景生成的多能互补微网系统优化配置》风光出力场景生成部分&#xff0c;目前大多数研究的是不计风光出力之间的相关性影响&…

grpc 使用demo示例

一、 编写proto文件 1、idea新建java项目&#xff0c;在maven中引入以下依赖&#xff1a; <dependencies><!--grpc底层通信组件--><dependency><groupId>io.grpc</groupId><artifactId>grpc-netty-shaded</artifactId><version&g…

Java笔记_10(项目阶段----拼图游戏)

项目阶段 页面搭建创建窗口 界面设置和菜单搭建创建菜单 添加图片图片对象 打乱图片用一维数组添加值到二维数组中 事件美化页面移动图片查看完整图片&#xff0c;作弊器&#xff0c;判断胜利计步器和菜单业务的实现弹窗创建 更换图片和登陆页面的建立表单 所有源码的实现游戏规…

es7.x集群部署-多台物理机部署-docker环境部署-docker-compose管理

es集群部署文档 部署es服务的三台服务器的ip和host分分别是&#xff1a; iphost_name192.168.1.2web02192.168.1.3storage02192.168.1.4Storage03 这个配置需要在服务器上编写对应的hosts文件&#xff0c;然后才可以使用host进行配置。 本次部署没有外挂配置文件&#xff0…

容器内无tcpdump,如何在宿主机上抓容器的包

抓包的容器里&#xff0c;没有安装tcpdump 命令&#xff0c;我们可以去容器所在宿主机上&#xff0c;使用 nsenter 命令切换网络命名空间后&#xff0c;使用宿主机上的tcpdump 命令&#xff0c;对容器进行抓包分析。 此例中&#xff0c;我要抓取容器中端口是5240的包&#xff…

react3:受控组件(表单默认变成受控)-组件通信 - typescript项目(表单,tabbar)

受控组件&#xff1a;表单 非受控组件表单元素值不受所在组件状态的控制, 我们将这样的表单元素称作: 非受控组件. 受控组件受控组件 : 值受到 React 组件状态控制的表单元素一般是通过 defaultValue 属性, onChange 事件配合将非受控组件变为受控组件. 多表单元素操作 &#…

Unity中GPUInstance详解

为什么要用GPUInstance 在没有GPUInstance此技术之前&#xff0c;对于像草地、树木&#xff0c;割草游戏&#xff0c;它们往往是数据量很大&#xff0c;但同时又只存在微小的差别如位置、旋转、颜色等。如果像常规物体那样进行渲染&#xff0c;所使用的绘制指令必然很多…

3.3 向量与矩阵的范数

学习目标&#xff1a; 要学习向量与矩阵的范数&#xff0c;我会采取以下几个步骤&#xff1a; 了解基本概念&#xff1a;首先&#xff0c;我会了解向量和矩阵的范数的基本概念和定义&#xff0c;以及它们的性质和特点&#xff0c;这是理解和掌握范数的基础。 学习具体算法&am…

Nacos简介、基本概念、基本架构、安装部署

官网&#xff1a;https://nacos.io/zh-cn/ 官方文档&#xff1a; 什么是 Nacos Github&#xff1a;https://github.com/alibaba/nacos&#xff0c;阿里巴巴开源项目。 简介 什么是Nacos&#xff1f; Nacos&#xff1a;(Dynamic) Naming and Configuration Service&#xf…

空间相关性----地理探测器--学习记录

目录 相关教程--软件及数据准备 R语言数据分析1、R包、数据准备、GD综合代码2、分异及因子探测---q值 gd3、交互作用探测---评估因子gdinteract4、风险区探测--显著性--gdrisk()5、生态探测---交叉影响--gdeco() 数据准备注意&#xff1a;使用Arcgis首先创建.gdb&#xff08;本…

数学建模第二天:数学建模工具课之MATLAB绘图操作

目录 一、前言 二、二维绘图 1、曲线图、散点图plot 2、隐函数、显函数与参数方程的绘图 ①ezplot ②fplot 三、三维绘图 1、单曲线plot3 2、多曲线plot3 3、曲面 ①实曲面surf ②网格曲面mesh 四、特殊的二维、三维图 1、极坐标图polar 2、平面散点图scatter …