Gibt es eine Möglichkeit, einen privaten Setter für eine Eigenschaft in TypeScript zu haben?
class Test
{
private _prop: string;
public get prop() : string
{
return this._prop;
}
private set prop(val: string)
{
//can put breakpoints here
this._prop = val;
}
}
Der Compiler beschwert sich darüber, dass die Sichtbarkeit für Getter und Setter nicht übereinstimmt. Ich weiß, dass ich nur das Hintergrundfeld festlegen kann, aber dann kann ich keine Haltepunkte festlegen, wenn der Wert festgelegt ist.
Ich habe überlegt, eine Schnittstelle zu verwenden, um den Setter auszublenden, aber Schnittstellen können nur eine Eigenschaft definieren, nicht, ob sie einen Getter auf Setter hat.
Vermisse ich hier etwas? Es scheint keinen Grund zu geben, private Setter nicht zuzulassen, die resultierende JS erzwingt ohnehin keine Sichtbarkeit und scheint besser zu sein als die aktuellen Alternativen.
Vermisse ich etwas Wenn nicht, gibt es einen guten Grund für keine privaten Setter?
quelle
this.prop += 'abc';
this
ich in meinem Beispiel verwendet habe. Ich meine zulassen+=
und-=
innerhalb der Klasse, wo Sie einen Haltepunkt setzen können. Die @ Fenton-Lösung schlägt vor, eine Methode hinzuzufügen, die Sie jedoch innerhalb der Klasse nicht+=
hinzufügen könnenprop
. In meiner Lösung finden Sie eine Möglichkeit, dies zu tun.this._prop += 'I can set it!';
_prop
Feld einstellt , z. B. callnotify('_prpo', value)
, dann reicht das_prop
direkte Einstellen nicht aus.Ich hoffe auch, dass wir einen öffentlichen und einen privaten Setter haben könnten. Bis wir dies tun, besteht eine andere Möglichkeit, dies zu handhaben, darin, zusätzliche private Getter und Setter hinzuzufügen:
class Test { _prop: string; public get prop(): string { return this._prop; } private get internalProp(): string { return this.prop; } private set internalProp(value: string) { this._prop = value; } private addToProp(valueToAdd: string): void { this.internalProp += valueToAdd; } }
quelle