При попытке присвоения именованного объекта пустому массиву интерфейса IBindings он выдает эту ошибку, но он прекрасно компилируется и работает нормально.
Узел 10.16.0, машинопись 3.5.1, VSCode.
Уже пытался изменить на extends на Array, но не работает.
import { IBindings } from './ioc.interface';
export class ioc {
private _bindings: IBindings[];
constructor () {
this._bindings = [];
}
bind (namespace: string, closure: Function) {
if (typeof (closure) !== 'function') {
throw Error('IoC.bind expects second parameter to be a closure: ' + closure);
}
console.log(closure);
// Error is Right here
this._bindings[namespace] = {
closure: closure,
singleton: false,
cachedValue: null
}
console.log(`Binding ${namespace} to ioc container`);
}
}
export interface IBindings {
[namespace: string]: {
closure: Function,
singleton: boolean,
cachedValue: Function | null
}
}
Я ожидаю, что не буду выдавать никаких ошибок, потому что это явно строка, которую нужно передать в IBindings, но вывод Element неявно имеет тип 'any', потому что выражение индекса не имеет типа 'number'.