Я нашел способ получить безопасность типов при использовании mapStateToProps
из react-redux
: как задокументировано вы можете определить интерфейс и параметризовать React.Component<T>
с вашим интерфейсом.
Однакокогда я определяю mapStateToProps
, я уже определяю функцию, в которой можно определить типы свойств результирующего объекта. Например,
function mapStateToProps(state: MyState) {
return {
counter: state.counter
};
}
Здесь можно сделать вывод, что реквизит counter
соответствует типу state.counter
. Но мне все еще нужно иметь стандартный код, подобный следующему:
interface AppProps {
counter: number;
}
class App extends React.Component<AppProps> { ... }
export default connect(mapStateToProps)(App);
Так что вопрос в том, есть ли способ структурировать код, чтобы я мог избежать написания типа counter
дважды? Или чтобы избежать параметризации типа React.Component
- даже если бы я мог получить реквизиты компонента, выведенные из явно намекаемого типа результата функции mapStateToProps
, это было бы предпочтительнее. Мне интересно, является ли приведенное выше дублирование действительно нормальным способом написания типизированных компонентов с использованием React-Redux.