• 操作符keyof的作用是什么


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

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

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

    1. 访问对象的属性:

      1. interface Person {
      2. name: string;
      3. age: number;
      4. }
      5. const person: Person = {
      6. name: "Alice",
      7. age: 25,
      8. };
      9. type PersonKeys = keyof Person; // 联合类型:"name" | "age"
      10. console.log(person["name"]); // 访问对象属性

      在上述示例中,PersonKeys 类型通过 keyof Person 获取了 Person 接口的属性名,即 "name""age",作为联合类型。

    • 定义映射类型:

      1. interface Person {
      2. name: string;
      3. age: number;
      4. }
      5. type ReadonlyPerson = {
      6. readonly [K in keyof Person]: Person[K];
      7. };
      8. const readonlyPerson: ReadonlyPerson = {
      9. name: "Alice",
      10. age: 25,
      11. };
      12. readonlyPerson.name = "Bob"; // 错误,只读属性无法修改

      在上述示例中,通过使用 keyof Person,我们创建了一个映射类型 ReadonlyPerson,将 Person 接口的所有属性都设置为只读。

    • 进行类型约束:

      1. function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
      2. return obj[key];
      3. }
      4. const person: Person = {
      5. name: "Alice",
      6. age: 25,
      7. };
      8. const name = getProperty(person, "name"); // name 的类型为 string
      9. const age = getProperty(person, "age"); // age 的类型为 number
      10. const invalid = getProperty(person, "email"); // 错误,"email" 不是 Person 的属性名

      在上述示例中,getProperty 函数使用了两个泛型参数 TK extends keyof T。通过使用 keyof T,我们对第二个参数 key 进行了类型约束,确保它必须是 T 类型的属性名。

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

  • 相关阅读:
    14:00面试,14:06就出来了,这面试问的过于变态了。。。
    AWS-数据库迁移工具DMS-场景:单账号跨区域迁移RDS for Mysql
    图像数据增强2_标注框同时修改(VOC、YOLO)
    BFD基础
    Oracle数据库中索引的基本使用
    自动跟踪太阳光电路设计
    接口高可用
    求助,有关Kriging 代理模型相关问题
    51_Pandas (to_excel) 编写 Excel 文件 (xlsx, xls)
    sprngboot整合kabana
  • 原文地址:https://blog.csdn.net/m0_73481765/article/details/133581438