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.

Relaterte artikler