操作符keyof的作用是什么

简介: 操作符keyof的作用是什么

keyof 是 TypeScript 中的一个操作符,它用于获取一个类型的所有属性名(键)组成的联合类型。

使用 keyof 操作符可以在编译时获得一个类型的属性名,然后将这些属性名作为联合类型进行处理或操作。它可以用于访问对象的属性,定义映射类型,以及进行类型约束等场景。

下面是一些示例来说明 keyof 的作用:

  1. 访问对象的属性:
interface Person {
    name: string;
    age: number;
}
const person: Person = {
    name: "Alice",
    age: 25,
};
type PersonKeys = keyof Person; // 联合类型:"name" | "age"
console.log(person["name"]); // 访问对象属性
  • 在上述示例中,PersonKeys 类型通过 keyof Person 获取了 Person 接口的属性名,即 "name""age",作为联合类型。
  • 定义映射类型:
interface Person {
    name: string;
    age: number;
}
type ReadonlyPerson = {
    readonly [K in keyof Person]: Person[K];
};
const readonlyPerson: ReadonlyPerson = {
    name: "Alice",
    age: 25,
};
readonlyPerson.name = "Bob"; // 错误,只读属性无法修改
  • 在上述示例中,通过使用 keyof Person,我们创建了一个映射类型 ReadonlyPerson,将 Person 接口的所有属性都设置为只读。
  • 进行类型约束:
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
    return obj[key];
}
const person: Person = {
    name: "Alice",
    age: 25,
};
const name = getProperty(person, "name"); // name 的类型为 string
const age = getProperty(person, "age"); // age 的类型为 number
const invalid = getProperty(person, "email"); // 错误,"email" 不是 Person 的属性名
  1. 在上述示例中,getProperty 函数使用了两个泛型参数 TK extends keyof T。通过使用 keyof T,我们对第二个参数 key 进行了类型约束,确保它必须是 T 类型的属性名。

总结起来,keyof 操作符在 TypeScript 中用于获取一个类型的所有属性名组成的联合类型。它可以用于访问对象的属性,定义映射类型以及进行类型约束等场景,提供了更灵活和安全的类型操作。

相关文章
|
26天前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
26 3
|
26天前
|
存储 编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
20 1
|
7天前
|
Dart
Dart之运算符(算数、关系、逻辑、赋值、条件)
Dart之运算符(算数、关系、逻辑、赋值、条件)
8 0
|
2月前
|
C语言
逻辑操作符
条件操作符(三目操作符)是C语言中唯一的三元运算符,形式为:表达式1 ? 表达式2 : 表达式3。如果表达式1为真,执行并返回表达式2的结果;否则,执行并返回表达式3的结果。示例和练习展示了如何使用此操作符来比较和输出两个数中的较大值。
21 1
|
2月前
|
Java
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
17 0
|
2月前
|
C语言
条件操作符和逻辑操作符(C语言零基础教程)
条件操作符和逻辑操作符(C语言零基础教程)
|
2月前
|
JavaScript 前端开发 Java
运算符分为哪几类? 哪些运算符常用作判断?简述运算符的优先级?
运算符分为哪几类? 哪些运算符常用作判断?简述运算符的优先级?
|
2月前
|
安全 JavaScript
操作符keyof的作用是什么?
操作符keyof的作用是什么?
15 0
|
2月前
|
存储 程序员 C++
C/C++ 内存分配 new 操作符:剖析new操作符的实现机制和使用技巧
C/C++ 内存分配 new 操作符:剖析new操作符的实现机制和使用技巧
53 0
|
2月前
|
JavaScript
操作符keyof的作用是什么?
操作符keyof的作用是什么?