npm package @types/react
позволяет нам использовать React внутри наших приложений TypeScript. Мы определяем компоненты как
type Props = {...}
type State = {...}
export default class MyComponent extends React.Component<Props, State> {
}
здесь мы должны объявлять типы для компонентного реквизита и состояния (в переменных типа).
После того, как мы объявили эти типы, TypeScript использует это для проверки использования нашего компонента (форма реквизита, переданного ему).
Я хочу создать контейнер вокруг такого компонента. Контейнер будет повторно использовать опоры компонента. Но для того, чтобы создать другой компонент с тем же реквизитом, я снова должен повторно использовать типы для реквизита. Или экспортируйте их из исходного файла компонента и импортируйте в контейнер:
// original file
export type Props = {...}
// container file
import MyComponent, { Props } from './original'
Но я уже импортирую MyComponent
из этого файла. Этот компонент уже содержит информацию о реквизитах, которые он потребляет (благодаря переменным типа в React.Component
).
Вопрос в том, как я могу получить доступ к этой информации из самого класса компонента без явного экспорта/импорта типа для реквизита?
Я хочу что-то вроде:
import MyComponent from './MyComponent'
type Props = MyComponent.Props // <= here access the component prop types
export default class MyContainer extends React.Component<Props, {}> {}