typescript - Javascript: Üst sınıfın yapıcısı içinde alt sınıfın meta verilerine erişim
Bir üst sınıfın yapıcısında, super çağrısından önce bir alt sınıfın meta verilerine erişmek istiyorum.
Aşağıdaki örneğe bakın:
import "reflect-metadata";
const KEY = Symbol()
function Decorator(name: string) {
return function(target: any) {
Reflect.defineMetadata(KEY, name, target);
}
}
class BaseBase {
constructor(name: string) {
console.log(name);
}
}
class Base extends BaseBase {
constructor() {
// prints "undefined" (because its defined on the Child constructor)
console.log(Reflect.getMetadata(KEY, Base));
console.log(Reflect.getMetadata(KEY, arguments.callee)); // ERROR: deprecated and removed in ES5
super("insert meta data here");
// will print "ChildName" but this can not be used before super call
console.log(Reflect.getMetadata(KEY, Reflect.getPrototypeOf(this).constructor));
console.log(Reflect.getMetadata(KEY, this.constructor));
}
}
@Decorator("ChildName")
class Child extends Base {}
new Child();
Child sınıfının meta verilerini BaseBase sınıfına aktarmanın herhangi bir yolu var mı?
Sanırım Child yapıcısında metadata'ya erişebilir ve bunu Base yapıcı çağrısına geçirebilirim, ama birçok farklı Child'ım var ve hepsi için bir yapıcı tanımlamaktan kaçınmak istiyorum.