Использование функции редукционного соединения теряет информацию о классе в моей IDE (PhpStorm / WebStorm) - PullRequest
0 голосов
/ 28 сентября 2018

Использование функции connect из redux, похоже, приводит к тому, что моя IDE (PhpStorm) теряет способность "Найти использование" в моих классах.Я полагаю, потому что connect возвращает any, поэтому import SomeClass from SomeClass.ts теряет информацию о типе из этого файла.

export default connect(mapStateToProps)(SomeClass);

Из документов с избыточностью:

Он не изменяет класс компонента, переданный ему;вместо этого он возвращает новый класс подключенного компонента, который вы можете использовать.

Но я хочу, чтобы моя среда IDE воспринимала это так, как если бы это был мой исходный класс / компонент, поэтому он имеет всю информацию о типе.

Один способ, которым я нашел, как это исправить, это использовать аннотации с @connect, но для этого необходимо поместить функции mapStateToProps & mapDispatchToProps над классом.Я предпочитаю сохранять мои файлы классов достаточно чистыми, так как класс находится в самом верху файла.

Это дает Block-scoped variable 'mapSateToProps' used before its declaration import {connect} из'act-redux '

@connect(mapStateToProps)
class TestClass {

}

const mapStateToProps = (state, props) => {

}

Есть ли способ использовать соединение, сохранить информацию о типе класса в моей IDE ииметь mapStateToProps либо ниже класса, либо внутри класса как статические функции?Или просто где-нибудь еще в том же файле?

Я использую TypeScript & Babel.

1 Ответ

0 голосов
/ 28 сентября 2018

Вместо этого вы можете написать mapStateToProps как функцию, поскольку при использовании ключевого слова function объявление hoisted

например,

function mapStateToProps(state: TypeOfYourRootStore, props: TypeOfYourComponentsProps) {}
...