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
