Ich versuche, eine Proxy
zu verwenden, und ich habe Probleme. Ich habe eine Klasse wie folgt:Proxy kann keine Methode in der erweiterten Klasse
export class Builder {
public doSomething(...args: (string | number | Raw | Object)[]): this {
// Do stuff
return this
}
}
export class ModelBase extends Builder {
protected _items = {}
}
export class Model extends ModelBase {
public constructor(options?: ModelSettings) {
super(options)
return new Proxy(this, {
get: function (target, property) {
return target._items[property] || target
}
})
}
public static create() {
return new this()
}
}
ich dann Model
erweitern wie so:
export class MyClass extends Model {
public constructor() {
super({/* Some options go here */})
// Do some stuff
}
public static getItems() {
let t = this.create()
t.doSomething()
}
}
Dann rufe ich getItems()
, die eine Instanz der Klasse erstellt.
MyClass.getItems()
Als ich das laufen lasse, erhalte ich die Fehlermeldung:
TypeError: t.doSomething is not a function
Wo doSomething()
innerhalb der Klasse ist ModelBase
. Wenn ich die Proxy
auskommentieren, funktionieren die Dinge wie immer. Also würde ich gerne wissen, warum ich nicht auf die Elternklasse zugreifen kann.
'Klasse' ist ein Schlüsselwort; Ich bin mir nicht sicher, ob dies überhaupt mit dem Problem zu tun hat, aber ich würde Ihre Variable definitiv nicht "Klasse" nennen. – Jacob
Ich benutze nicht 'class', es war nur ein Beispiel. Ich habe es jedoch umbenannt. –
hat 'model' oder' modelBase' eine Eigenschaft '_items'? Und wenn ja, haben Items eine Methode, etwas zu tun? –