Я создал простое хранилище MobX:
import { observable, action, computed } from "mobx"
interface UserInterface {
login: string
email: string
password: string
}
class User {
@observable users: UserInterface[] = []
@action addUser = (newUser: any) => {
this.users.push(newUser)
}
@action logMe = () => {
console.log("MobX works!");
}
@computed get userCount() {
return this.users.length
}
}
export const UserStore = new User()
И это начало компонента, который использует данные из этого хранилища:
import withStyles, { WithStyles } from "@material-ui/core/styles/withStyles"
import { inject, observer } from "mobx-react"
import { UserStore } from "../../../stores/user-store"
interface RegisterFormProps extends WithStyles<typeof RegisterFormStyles> {
userStore?: UserStore
}
@inject("userStore")
@observer
class LoginForm extends React.Component<RegisterFormProps> {
У меня ошибка tslint в userStore?: UserStore
часть.Выдает ошибку: Type error: Cannot find name 'UserStore'. TS2304
.Путь к этому классу правильный.Если я изменю тип с UserStore на any
, он будет работать, но я хочу избегать использования типа any
.
@ Edit.Решение состоит в том, чтобы включить эти строки в конец файла магазина MobX:
const UserStore = new User();
export { UserStore }