c# - TypeScript sende parameter etter referanse
I C# er det mulig å sende parametere etter referanse. For eksempel:
private void Add(ref Node node)
{
if (node == null)
{
node = new Node();
}
}
Add(ref this.Root);
this.Root ville ikke være null etter å ha gjort Add(ref this.Root)
Fra det jeg har sett fra TypeScript, er det ikke mulig å sende parametere etter referanse. Denne koden:
private addAux(node: Node): void {
if (node === undefined) {
node = new Node();
}
}
addAux(this._root);
Etter å ha gjort addAux(this._root), vil this._root fortsatt være udefinert fordi en kopi av det vil bli sendt inn i addAux.
Finnes det en løsning for å ha samme funksjon som ref-nøkkelordet fra C# i TypeScript?
Svar #1
Den eneste løsningen jeg kan komme på nå er å gjøre noe sånt som dette:
private addAux(ref: {node: Node}): void {
if (ref.node === undefined) {
ref.node = new Node();
}
}
let mutable = {node: this._root};
addAux(mutable);
Etter dette vil noden inne i objektet mutable ikke være udefinert.
Svar #2
Kunne du gjøre dette?
private addAux(node: Node): Node {
if (node === undefined) {
node = new Node();
}
return node
}
this._root = addAux(this._root);
Som en merknad - dette er et JavaScript-spørsmål heller enn TypeScript. Datatyper i JS sendes alltid etter verdi.
