Вот этот код:
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'
Но элемент существует, регистрация объекта показывает правильное поведение. В чем прикол?