Почему тип свойства класса не ожидается, когда он назначен методом, определенным в суперклассе? - PullRequest
0 голосов
/ 14 октября 2019

Спасибо jcalz и pac0 за ваше руководство и терпение. Я извиняюсь за нечеткий вопрос. Я действительно хочу решить эту проблему быстро. Осознав это, я отредактировал вопрос.

Существует суперкласс:

class Bar<S = {}, Store = {}> {
  state?: S
  store?: Store
  getInitialState(initialState: S) {
    return {
      ...initialState,
      b: 'bar'
    }
  }
}

В этом классе есть метод getInitialState. он должен принять объект и вернуть новый объект с новым свойством b. Когда я расширяю его следующим образом:

class Baz extends Bar {
  state = initialState
  store = this.getInitialState(initialState)
  constructor() {
    super()
  }
}

store будет присвоено возвращаемое значение getInitialState, передающее initialState. Таким образом, ожидаемый тип магазина выглядит следующим образом:

{
  a: string,
  b: string
}

, но на самом деле это:

{
  b: string;
}

Так почему же такое поведение и как мне поступить, чтобы получить то, что я хочу?

Всего демо: Детская площадка

...