操作符keyof的作用是什么?

2023-12-01 12:52
文章标签 作用 操作符 keyof

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

keyof 是 TypeScript 中的一个操作符,用于获取一个类型(通常是一个对象类型或接口)的所有公共属性名组成的字符串字面量联合类型。它常常用于类型安全的属性访问和映射类型的定义。

什么时候使用 keyof

  1. 类型安全的属性访问:当你想要基于某个对象的属性进行类型安全的操作时,可以使用 keyof 来确保属性名的正确性。
  2. 映射类型:当定义映射类型(将一种类型映射为另一种类型)时,keyof 可以帮助你获取原始类型的所有属性名。

与什么搭配?

keyof 通常与 TypeScript 的对象类型、接口、和映射类型搭配使用。

如何使用?

假设我们有一个接口 Person

interface Person {  name: string;  age: number;  address?: string;  
}

        1.获取所有属性名

使用 keyof 获取 Person 的所有属性名:

type PersonKeys = keyof Person;  // "name" | "age" | "address"
      2.类型安全的属性访问

使用 keyof 来确保我们只在 Person 上访问存在的属性:

function getProperty(person: Person, key: keyof Person) {  return person[key];  // 这里是类型安全的  
}
      3.映射类型

将 Person 的每个属性值转换为只读(readonly):

type ReadonlyPerson = {  [K in keyof Person]: Readonly<Person[K]>;  
};


上述代码中,K 代表 Person 的每一个属性名,然后我们使用 Person[K] 获取该属性的类型,并用 Readonly<T> 将其转换为只读。

        4.过滤某些属性

如果你只想获取 Person 的可选属性,可以使用如下方式:

type OptionalKeys<T> = { [K in keyof T]: T[K] extends Required<T>[K] ? never : K }[keyof T];  
type OptionalPersonKeys = OptionalKeys<Person>;  // "address"

这里我们使用了一个映射类型和条件类型来筛选出所有可选的属性名。

这篇关于操作符keyof的作用是什么?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

$在R语言中的作用示例小结

《$在R语言中的作用示例小结》在R语言中,$是一个非常重要的操作符,主要用于访问对象的成员或组件,它的用途非常广泛,不仅限于数据框(dataframe),还可以用于列表(list)、环境(enviro... 目录1. 访问数据框(data frame)中的列2. 访问列表(list)中的元素3. 访问jav

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C