Búsqueda de sitios web

typescript MyObject.instanceOf()


Todas nuestras clases de TypeScript heredan (directa o indirectamente) de:

export class WrObject {
    className:string;

    public instanceOf(name : String) : boolean {
        return this.className === name;
    }
}

Luego declaramos una subclase como:

export class Section extends WrObject {
    public static CLASS_NAME = 'Section';
    className = Section.CLASS_NAME;

        public instanceOf(name : String) : boolean {
            if (this.className === name)
                return true;
            return super.instanceOf(name);
        }

}

Y luego puedes comprobar con:

if (obj.instanceOf(Section.CLASS_NAME))

Todo funciona muy bien. Sin embargo, creo que sería más limpio si pudiéramos hacer:

if (obj.instanceOf(Section))

¿Hay alguna manera de hacer eso? ¿O alguna sugerencia sobre un enfoque mejor?

gracias - dave

Respuesta #1

Si estás dispuesto a aceptar la naturaleza prototípica de JavaScript, puedes simplemente usar instanceof que verifica la cadena de prototipos:

class Foo{}
class Bar extends Foo{}
class Bas{}

var bar = new Bar();

console.log(bar instanceof Bar); // true
console.log(bar instanceof Foo); // true
console.log(bar instanceof Object); // true

console.log(bar instanceof Bas); // false

Artículos relacionados