【发布时间】:2019-12-17 01:22:53
【问题描述】:
我有一个类型保护,其唯一目的是检查对象中属性的存在以及它是否具有某些价值。
如果类型保护检查成功,我想对编译器说这句话:
这是一个输入对象,如果类型保护成功则输出是一个对象 具有 lineHeight 属性
对于确切的对象,它看起来像这样:
type PickedLineHeight = Pick<TextStyle, "lineHeight">
type NonNullableLineHeight = Required<PickedLineHeight>
function hasLineHeight(style: object): style is NonNullableLineHeight {
return (
style.hasOwnProperty("lineHeight") &&
(style as PickedLineHeight).lineHeight !== undefined
)
}
如何开发更通用的函数版本,例如 hasProperty(style, prop)?
我的尝试是:
function hasProperty<T extends { [key: string]: any}, U extends keyof T>(style: T, prop: U): style is Pick<T, U> {
return (
style.hasOwnProperty(prop) &&
style[prop] !== undefined
)
}
但我经常收到此错误消息,我无法消除或理解
【问题讨论】:
标签: typescript typescript-generics