gpt4 book ai didi

typescript - 如何使用联合类型修复 typescript "Property does not exist on type"?

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:15 24 4
gpt4 key购买 nike

我正在尝试访问可能是也可能不是对象的变量的属性。如果变量是一个对象,我想读取它的“值”属性,否则只读取变量。

我想做这样的事情:

interface MyType {
myvar: string | MyObject
}
interface MyObject {
value: string
}

function MyComponent({myvar}: MyType){
return(
<div>
{myvar.value? myvar.value : myvar}
</div>
)
}

但我在 myvar.value 上收到错误“在类型 MyObject 上找不到属性‘值’”。

我试过检查变量是否是对象{typeof myvar === "object"? myvar.value : myvar}, 没有运气。

我发现了这个 typescript 问题 https://github.com/Microsoft/TypeScript/issues/28138他们建议使用的地方if("value"in myvar)if(myvar.value !== undefined)

不幸的是,它没有用。

编辑:是否有不需要转换为“任何”的解决方案?

最佳答案

你可以尝试这样的事情:

const getValueType = (myvar: any) => {
if (myvar typeof === "object") {
return myvar.value
} else {
return myvar
}
}

or this:

const getValueType = (myvar: any) => {
(myvar typeof === "object") ? myvar.value : myvar
}

render(){
const value = getValueType(myvar)
<div>
{value}
</div>
}

关于typescript - 如何使用联合类型修复 typescript "Property does not exist on type"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57932828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com