Машинопись: как установить тип потомков в React Component?

Могу ли я установить тип детей в TypeScript?

Например, у меня есть такие компоненты

class UserProfile extends React.Component<{ id: number }, void>{
}

class Thumbnail extends React.Component<{ children: UserProfile[] }, void>{

}

class UsersList extends React.Component<void, void>{

    public render() {
        return (
            <div>
                <Thumbnail><UserProfile id={1} /></Thumbnail>
                <Thumbnail><UserProfile id={2} /></Thumbnail>
            </div>
        )
    }
}

Я хочу определить, какие конкретные дочерние элементы поддерживаются в компоненте миниатюр, чтобы избежать такой ситуации:

class UsersList extends React.Component<void, void>{

    public render() {
        return (
            <div>
                <Thumbnail><UserProfile id={1} /></Thumbnail>
                <Thumbnail><UserProfile id={2} /></Thumbnail>
                <Thumbnail><span>Some plain text</span></Thumbnail> // This should be forbidden because Thumbnail component expects to have an array of UserProfile elements as it can handle them
            </div>
        )
    }
}

Этот пример не работает, но есть ли способ сделать это?

1 ответ

Решение

установить тип детей в React Component?

Не может быть сужено с аннотацией типа (все это JSX.Element). Может быть сделано с интроспекцией во время выполнения (type собственность каждого ребенка).

Другие вопросы по тегам