Изменение типа данных стороннего свойства компонента react?

#reactjs #typescript

#reactjs #typescript

Вопрос:

У меня есть компонент, который работает нормально, но одним из реквизитов является тип «string», и я хотел бы передать компонент или просто сделать тип данных «any». Есть ли способ сделать это?

Чтобы сделать это более понятным, я пытаюсь изменить поведение стороннего класса. В данном случае это очень безопасно, и я изменил сторонний код напрямую, но гораздо лучше, если это возможно в Typescript, наследовать и в унаследованном классе изменить тип данных prop, чтобы я мог вместо простого отображения текста отображать, например, список.

Комментарии:

1. Вашему вопросу не хватает ясности. Можете ли вы добавить больше деталей к своему вопросу?

2. Если компонент библиотеки третьей стороны ожидает строку, вы должны передать ему строку. Вы можете столкнуться с неожиданным поведением, если передадите ему компонент. Чтобы ответить на ваш вопрос, я не думаю, что в любом случае можно настроить типизированные определения сторонней библиотеки

3. @paulosullivan22: я точно знаю, что произойдет — я спрашиваю, как это можно сделать без прямого изменения самой сторонней библиотеки.

Ответ №1:

Ну, передача типа imo any обычно сводит на нет цель использования Typescript в первую очередь. Насколько я понимаю, у вас есть два варианта:

  1. Разделите реквизит: используйте реквизит типа string и другой типа ReactNode , поскольку это компонент, который вы планируете передать.

  2. Если по какой-то причине это должен быть один prop, используйте string | ReactNode в качестве его типа. Хотя я бы рекомендовал вариант 1 по этому поводу.

Если подумать еще дальше, вы можете вообще отказаться от передачи компонента в качестве поддержки (по соображениям производительности). Проектирование ваших компонентов таким образом, чтобы вы могли работать с обычным ES6 import для получения компонента, было бы намного лучше, но опять же это зависит от вашего использования и дизайна.