正如关于 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/