2015-03-13 10 views
11

Mi piacerebbe utilizzare l'indice di stringa dell'interfaccia.come utilizzare l'interfaccia indicizzata stringa di dattiloscritto?

interface IDictionary { 
    [index: string]: string; 
} 
var params: IDictionary; 
params = [{ "heart": "HP" }, { "mana": "MP" }]; 
console.log(params); 

Ho pensato che questo potrebbe essere come MAP come una coppia di chiavi e valore. Non sono sicuro che questo sia l'approccio corretto.

risposta

10

L'utilizzo dell'indicizzatore limita ciò che può essere messo o recuperato per l'oggetto utilizzando la sintassi dell'indice. Per esempio. foo è dedotto di essere di tipo string:

interface IDictionary { 
    [index: string]: string; 
} 
var params = {} as IDictionary; 

params['heart'] = 'HP'; // okay 
var foo = params['heart']; // foo:string 

Il seguente d'altra parte è un errore in quanto non digitare verificare:

var bar:number = params['heart']; // ERROR 
params['heart'] = 234; // ERROR 

demo completa:

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 
+4

Don' t dimenticare che è necessario inizializzare i parametri .. 'params = {};' – mjohnsonengr

Problemi correlati