Estoy analizando un código Angular y me encontré con un type de property de una Interface llamada 'Origin' que no entiendo?, Aquí está:
export interface Origin { areaNum?: number; open?: { [key: string]: any }; } Mi primera pregunta es ¿qué tipo de objeto es ese? Pensé que los objects tenían uno o varios pares key:value , donde está la key ... bueno, la clave :), y el value puede contener cualquier valor. Este type extraño parece ser un object , pero no veo una key:value , solo contiene una array ¿?. Me parecía que era un array por los corchetes, pero ¿un array puede ser la clave de un object ? ¿cómo?. Estoy tratando de averiguar cómo se vería la propiedad open al crear un objeto que usa esta Interface . No entiendo qué es esto { [key: string]: any }; . ¿Me ayudarías a entender?, como voy aprendiendo. Si es posible, ¿puede mostrarme un object de ejemplo ficticio que use esta property open con un value válido del type extraño anterior? ¡Gracias!
Mi primera pregunta es ¿qué tipo de objeto es ese?
Es un objeto que tiene dos propiedades opcionales:
areaNum , un númeroopen , un objeto que usa una firma de índice que permite índices de cadena: el objeto puede tener propiedades con cualquier nombre de cadena, y el valor de esas propiedades es anyAquí hay un ejemplo de código, ver comentarios:
export interface Origin { areaNum?: number; open?: { [key: string]: any }; } let a: Origin = { areaNum: 42, open: {}, // <== Valid, an index signature allows there to be no properties }; if (a.open) { // You can do this, because `a.open` has an index signature making // any string is a valid property for it: a.open["any string you want"] = 42; // You *can't* do this, because `a` doesn't have an index signature, // it only has `areaNum` and `open` properties: a["any string you want"] = 42; }