Tengo una matriz (Elemento []) que contiene diferentes implementaciones.
Ahora, ¿cuál es la forma correcta de identificar la "subclase"/tipo de un elemento de matriz? es decir, ¿cómo identifico a Element[1] como una implementación de RedElement?
export interface Element { ... } export class RedElement implements Element { ...specific functionality/values. } export class GreenElement implements Element { ...specific functionality/values. } const myArr: Element[] = [ new GreenElement(...params), new GreenElement(...otherParams), new RedElement(...), ... ] Ahora, cuando más tarde quiera trabajar con uno de esos elementos, necesito saber qué tipo/clase es, pero todo lo que me queda es un Objeto de tipo Element .
myArr.forEach(e => { e <- has type Element });Obviamente, podría agregar una propiedad que identifique cada elemento como su clase específica mediante una cadena o una enumeración, pero eso no parece demasiado elegante.
¿Hay una mejor manera?
Como está creando clases, puede usar el operador instanceof para discriminar entre sus diferentes elementos.
myArr.forEach(e => { if (e instanceof RedElement) { ... } });