Typoskript: Vermeiden Sie einen Vergleich nach Referenz

Brauche ich zum speichern einer Liste von Punkten, und überprüfen Sie, ob ein neuer Punkt ist bereits enthalten in dieser Liste

class Point {
    x: number;
    y: number;
    constructor(x: number, y: number) {
        this.x = x;
        this.y = y;
    }
}

window.onload = () => {
    var points : Point[] = [];
    points.push(new Point(1,1));
    var point = new Point(1,1);
    alert(points.indexOf(point)); //-1 
}

Offensichtlich Typoskript verwendet Vergleich von Referenz, aber in diesem Fall, das macht keinen Sinn. In Java oder C# würde ich überlastung der equals Methode, in Maschinenschrift, das scheint nicht möglich zu sein.

Ich als Schleife durch das array mit foreach und überprüfen jeden Eintrag für Gleichberechtigung, aber das scheint eher kompliziert und aufblasen würde den code.

Gibt es so etwas wie equals in typescript ? Wie kann ich die Umsetzung meiner eigenen Vergleiche ?

  • Typescript ist eine meta-Sprache, keine Sprache. Sie sollten sich Fragen, "gibt es so etwas wie gleich in javascript", Typoskript nicht.
  • Wo / wie machst du den Vergleich, die in Ihrem Skript?
  • Typoskript hat Generika. Sie hätten realisieren können benutzerdefinierte Containerklassen Sie, dass der check für sowas gleich. eine Schnittstelle icomparable und eine generische Klasse arraylist<T, wo T implementiert icomparable - > würde die Arbeit machen.
  • Ich bin kein Experte, aber ich denke, dass dart bietet so etwas wie hashcode und Sie außer Kraft setzen kann. pchalin.blogspot.com/2014/04/...
  • Vielleicht eine würdige alternative zu Typescript?
  • Auch frameworks wie Vue bieten eine option, um "Schlüssel" zur Identifizierung von Objekten, so ist es praktisch. Siehe vuejs.org/v2/guide/list.html v-bind:key
  • In WPF gibt es SelectedValuePath vielleicht? Um zu vermeiden, überschreiben Equals

InformationsquelleAutor lhk | 2014-01-28
Schreibe einen Kommentar