Reputation: 608
I'd like to use string index of interface.
interface IDictionary {
[index: string]: string;
}
var params: IDictionary;
params = [{ "heart": "HP" }, { "mana": "MP" }];
console.log(params);
I thought this might be like MAP such as a pair of key and value. I'm not sure this is correct approach.
Upvotes: 31
Views: 58112
Reputation: 275857
Using the indexer limits what can be put or fetched for the object using the index syntax. E.g. foo
is inferred to be of type string
:
interface IDictionary {
[index: string]: string;
}
var params = {} as IDictionary;
params['heart'] = 'HP'; // okay
var foo = params['heart']; // foo:string
The following on the other hand is an error as it will not type check:
var bar:number = params['heart']; // ERROR
params['heart'] = 234; // ERROR
Complete demo:
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
Upvotes: 51