TS获取对象属性值的类型

Posted 前端精髓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TS获取对象属性值的类型相关的知识,希望对你有一定的参考价值。

语法如下:

type Person =  age: number; name: string; alive: boolean ;
 
type I2 = Person[keyof Person];
//type I2 = string | number | boolean

或者联合类型

const RestfulMethod = 
  get: 'GET',
  post: 'POST',
  put: 'PUT',
  delete: 'DELETE'
 as const


type IRestfulMethod = typeof RestfulMethod
type TypeRestfulMethod = IRestfulMethod[keyof IRestfulMethod]
// type TypeRestfulMethod = 'GET' | 'POST' | 'PUT' | 'DELETE'

查看官方文档:https://www.typescriptlang.org/docs/handbook/2/indexed-access-types.html

如果想获取对象属性名的类型,可以这样

type Person =  age: number; name: string; alive: boolean ;
 
type I2 = keyof Person
//type I2 = 'age' | 'name' | 'alive'

把对象中的方法名取出来

let obj = 
  name: 'hello',
  age: 18, 
  eat () 
    return 'food'
  ,
  link () 
    return 'dog'
  


type methodsPick<T> = [K in keyof T]: T[K] extends Function ? K : never[keyof T];
// T1 = 'eat' | 'link'
type T1 = methodsPick<typeof obj>

以上是关于TS获取对象属性值的类型的主要内容,如果未能解决你的问题,请参考以下文章

TS 对象动态key 类型报错问题

角度:错误 TS2339:“对象”类型上不存在属性“数据”

OpenCV_Mat类对象常用属性值的获取方法

TypeScript:TS2339 错误——“对象”类型上不存在属性

TS2339:“EventTarget”类型上不存在“最近”属性。 - 如何在 React 中获取原生 event.target?

TS / JS-如果对象的属性与数组中的另一个属性相匹配,则从对象数组中获取“值”