我尝试动态检查打字稿中反应子组件的类型。 以下代码运行良好,但是似乎打字稿不想让我破坏孩子。
我收到Typescript错误:
az postgres server configuration set --name max_connections --resource-group myresourcegroup --server mydemoserver --value 100
除了使用// @ ts-ignore之外,我还能摆脱打字错误吗?
TS2339: Property 'type' does not exist on type 'ReactNode'.
答案 0 :(得分:0)
这是因为默认的ReactNode
没有字段类型。
您只需使用&功能即可添加该键:
export interface AuxProps {
children: (React.ReactNode & {type: string})[]
}
这会将type
添加到元素中。
答案 1 :(得分:0)
您无法从type
中读取ReactChild
,因为ReactChild
是一个联合,并且并非该联合的每个成员都有一个名为type
的属性。
实际上,只有ReactElement
个。
解决方案是检查谓词函数中的两件事:
ReactElement
吗?代码:
const test = children.filter(child => React.isValidElement(child) && child.type === 'Test');