C'è un modo per avere un setter privato per una proprietà in TypeScript?Dattiloscritto di setter privato?
class Test
{
private _prop: string;
public get prop() : string
{
return this._prop;
}
private set prop(val: string)
{
//can put breakpoints here
this._prop = val;
}
}
Il compilatore si lamenta che la visibilità per getter e setter non corrispondono. So che posso solo impostare il campo di supporto, ma ma non riesco a impostare i breakpoint quando il valore è impostato.
Ho pensato di usare un'interfaccia per nascondere il setter, ma le interfacce possono solo definire una proprietà, non se ha un getter sul setter.
Mi manca qualcosa qui? Non sembra esserci alcuna ragione per non permettere ai setter privati, il JS risultante non impone comunque visibilità, e sembra migliore delle alternative attuali.
Mi manca qualcosa? Se no c'è una buona ragione per nessun setter privato?
Il problema di questa soluzione è che non consentono + = (e - =) Operatore: 'this.prop + = 'abc'; ' – splintor
@splintor yes ma non lasciare che altri cambino il valore è l'intero punto :) –
@TobyJ Notate il' this' che ho usato nel mio esempio. Voglio dire consentire '+ =' e '- =' all'interno della classe, dove puoi impostare un punto di interruzione. La soluzione di @Fenton suggerisce l'aggiunta di un metodo, ma poi all'interno della classe non puoi usare '+ =' per aggiungere a 'prop'. Vedi [la mia soluzione] (https://stackoverflow.com/a/45909300/46635) per un modo per farlo. – splintor