操作符keyof的作用是什么?

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

在 TypeScript 中,keyof 操作符用于获取一个类型的所有属性名组成的联合类型。它可以用来创建泛型函数或接口,用于操作对象的属性名称而不是属性值。

例如,假设我们有一个名为 Person 的接口:

interface Person {
  name: string;
  age: number;
  gender: "male" | "female";
}

如果我们想要定义一个函数,将 Person 对象中某个属性的值取出来,但是我们不想写死这个属性的名称,而是希望能够根据传入的字符串参数动态获取属性名称,那么就可以使用 keyof 操作符来定义泛型类型参数:

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

在这个例子中,我们定义了一个泛型函数 getProperty,它接受一个对象 obj 和一个属性名 key,并返回指定属性名的属性值。通过使用 keyof T 来约束类型参数 K,我们限制了 key 参数必须是 T 类型的属性名之一。

我们可以使用这个函数来获取 Person 对象中指定属性的值:

const person: Person = {
  name: "Alice",
  age: 30,
  gender: "female"
};
getProperty(person, "name"); // "Alice"
getProperty(person, "age"); // 30
getProperty(person, "gender"); // "female"
getProperty(person, "salary"); // Error: 类型“"salary"”的参数不能赋给类型“"name" | "age" | "gender"”的参数

总之,keyof 操作符可以用来获取类型的所有属性名组成的联合类型,而在泛型函数或接口中使用 keyof 操作符可以对属性名称进行操作,从而实现更加灵活和可重用的代码。

相关文章
|
8天前
|
C语言
条件操作符和逻辑操作符(C语言零基础教程)
条件操作符和逻辑操作符(C语言零基础教程)
|
15天前
|
JavaScript 前端开发 Java
运算符分为哪几类? 哪些运算符常用作判断?简述运算符的优先级?
运算符分为哪几类? 哪些运算符常用作判断?简述运算符的优先级?
|
1月前
|
安全 JavaScript
操作符keyof的作用是什么?
操作符keyof的作用是什么?
|
2月前
|
设计模式 存储 算法
【C++ 函数调用操作符】探究C++中的函数调用操作符 基础到高级应用
【C++ 函数调用操作符】探究C++中的函数调用操作符 基础到高级应用
278 0
|
2月前
|
存储 程序员 C++
C/C++ 内存分配 new 操作符:剖析new操作符的实现机制和使用技巧
C/C++ 内存分配 new 操作符:剖析new操作符的实现机制和使用技巧
26 0
|
4月前
|
编译器 C++ 索引
C learning_13 操作符前篇(条件操作符、 逗号表达式、 下标引用、函数调用和结构成员、 表达式求值)
C learning_13 操作符前篇(条件操作符、 逗号表达式、 下标引用、函数调用和结构成员、 表达式求值)
|
4月前
|
存储 C语言
C learning_12 操作符前篇(算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符)
C learning_12 操作符前篇(算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符)
|
5月前
|
JavaScript 安全
操作符keyof的作用是什么
操作符keyof的作用是什么
38 3
|
7月前
|
索引
操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符
操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符
|
7月前
|
编译器 C语言
操作符的属性,C语言中运算符的优先性和结合性,常见的问题表达式
操作符的属性,C语言中运算符的优先性和结合性,常见的问题表达式