Ответ 1
Использование ограничений индексатора, которые можно поместить или выбрать для объекта с помощью синтаксиса индекса. Например, foo
определяется как string
типа:
interface IDictionary {
[index: string]: string;
}
var params = {} as IDictionary;
params['heart'] = 'HP'; // okay
var foo = params['heart']; // foo:string
С другой стороны, следующая ошибка - это ошибка, так как она не будет вводить проверку:
var bar:number = params['heart']; // ERROR
params['heart'] = 234; // ERROR
Полная демонстрация:
interface IDictionary {
[index: string]: string;
}
var params = {} as IDictionary;
params['heart'] = 'HP'; // okay
var foo = params['heart']; // foo:string
var bar:number = params['heart']; // ERROR
params['heart'] = 234; // ERROR