Получить предмет из объекта без ошибок - PullRequest
0 голосов
/ 10 июля 2020

Вот этот код:

enum Stages { 
  BOOT = 'boot', 
  LOAD = 'load' 
}

interface A { … }
interface C<T> { … }

interface List {
  readonly [Stages.BOOT]: C<A>;
  readonly [Stages.LOAD]: C<A>;
}

class Main {
  constructor(
    readonly list: List
  ){}

  getItem <T extends A>(key: Stages): C<T> | null {
    if (key in this.list) return this.list[key] as C<T>; //here is the error
                               //^^^^^^^^^^^^^
    return null;
  }
}

Компилятор говорит:

Element implicitly has an 'any' type because expression of type 
 'Stages' can't be used to index type 'List'.
Property '[Stages.LOAD]' does not exist on type 'List'

Но элемент существует, регистрация объекта показывает правильное поведение. В чем прикол?

...