我是靠谱客的博主 执着刺猬,最近开发中收集的这篇文章主要介绍typescript 之 keyof,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

keyof

  • TypeScript 允许我们遍历某种类型的属性,并通过 keyof 操作符提取其属性的名称。
  • 该操作符可以用于获取某种 类型 的所有键,其返回类型是 联合类型,简单的说,它是作用于类型的,返回类型为联合类型。

效果

  • 将类型对应的对象中的属性解构出来,并作为联合类型返回。
  1. 直接作用 interface 类型时, interface 对应的为对象, keyof 将对象中的属性名都结构出来,并作为联合类型返回。
interface IPerson {
  name: string,
  age: number,
  sex: 0 | 1
}

type P1 = keyof IPerson
interface ITest {
  key: P1
}
let test:ITest = {
  key: "name" // name | age | sex
}
  1. 作用于 数组时

将数组对应的属性全部作为联合类型返回。

interface IPerson {
  name: string,
  age: number,
  sex: 0 | 1
}

type P1 = keyof IPerson[]

interface ITest {
  key: P1
}

let test:ITest = {
  key: "length" // length | concat | ...
}
  1. 作用于类时

作用于类时,效果类似于对象,它将类生成的对象属性,当联合类型返回。

class Person {
  name: string
  age: number
  sex: 0 | 1

  constructor(name: string, age: number, sex: 0 | 1) {
    this.name = name
    this.age = age
    this.sex = sex
  }

  getName(): string {
    return this.name
  }
  setName(name: string): void {
    this.name = name
  }
}

type K1 = keyof Person

interface ITest {
  key: K1
}
let test: ITest = {
  key: "age" // age | name | sex | setName | getName
}

示例

// 两个参数,第一个参数为对象,第二个参数为对象中的属性名,
// 将对象中对应的属性值返回

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

最后

以上就是执着刺猬为你收集整理的typescript 之 keyof的全部内容,希望文章能够帮你解决typescript 之 keyof所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部