Вот сценарий:
У меня есть пользовательский компонент:
class MyComponent extends React.Component {
render () {
return (
<SuperComponent>
<SubComponent1 /> // <- valid child
</SuperComponent>
)
}
class MyComponent extends React.Component {
render () {
return (
<SuperComponent>
<SubComponent2 /> // <- No! It's not right shape
</SuperComponent>
)
}
, а ссылочные SuperComponent и SubComponent1:
interface superPropsType = {
children: ReactElement<subPropsType1>
}
class SuperComponent extends React.Component<superPropsType> { ... }
interface subPropsType1 = {
name: string
}
class SubComponent1 extends React.Component<subPropsType1> { ... }
interface subPropsType2 = {
title: string
}
class SubComponent2 extends React.Component<subPropsType2> { ... }
Я хочу, чтобы SubComponent1 былбыть единственным допустимым дочерним элементом SuperComponent, то есть, я хотел бы, чтобы машинопись могла выдавать ошибку, если я помещаю <SubComponent2 />
или другие типы как дочерний элемент <SuperComponent>
Кажется, что только машинопись проверяет, что дочерний элемент долженимеют тип ReactElement, но ts не проверяет форму реквизитов этого дочернего элемента (который является subPropsType1), то есть, если я помещаю строку или число как дочерний элемент SuperComponent, ts будет жаловаться на то, что требование типа не соответствует, но если я размещу здесь какой-либо тег jsx (который будет перенесен в ReactElement), ts сохранит молчание
Есть идеи?И если какие-либо конфиги необходимы для публикации здесь, пожалуйста, не стесняйтесь спрашивать
Действительно ценю любую идею и решение