typescript - 使用 keyof 运算符获取 typescript 类的属性类型

标签 typescript

正如关于 keyof 运算符的 Typescript 文档中所述,可以使用以下函数获取对象实例的属性。

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

当然,可以通过将return o[name]替换为return typeof o[name]来获取属性的类型。有没有一种方法可以不传递任何对象实例来检索属性的类型?

function getPropertyType<T>(name: keyof T) {
    // something like T[name]?
}

最佳答案

这是您要找的吗?

type PropType<TObj, TProp extends keyof TObj> = TObj[TProp];

并通过执行以下操作获取对象属性的类型:

type MyPropType = PropType<ObjType, '<key>'>;

与typescript中Pick的使用方式相同,如果传入无效的key会报编译错误。

更新

正如@astoilkov 所建议的,一个更简单的替代方案是 PropType['key']

关于typescript - 使用 keyof 运算符获取 typescript 类的属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45894524/

相关文章:

Angular 8 - 路由没有发生 - 垫表行

javascript - typescript 对象解构结果为 "Property assignment expected."

typescript - 需要有关创建 typescript 公共(public)类型定义的策略的指导

typescript - 在 Typescript 定义文件中定义类

node.js - 使 Typescript Node 模块协同工作

javascript - 如何实现使用 Angular 6 创建的表格左侧的复选框?

typescript - 如何从联合中提取单一类型?

javascript - 代码是什么 { [s : string]: boolean } in the Angular Code block?

angular - 在 session 存储中保存用户对象

javascript - 相同字符串值的两个实例不相等