Не могу найти имя в Typescript с помощью MobX - PullRequest
0 голосов
/ 06 февраля 2019

Я создал простое хранилище 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 }

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вы пробовали это?

const UserStore = new User();
export { UserStore }
0 голосов
/ 06 февраля 2019

export const UserStore = new User() означает, что вы экспортируете переменную UserStore, и переменную нельзя использовать как тип (но классы могут).Вы должны экспортировать класс UserStore использовать его в интерфейсе userStore?: User

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...