In Typoskript (und einigen anderen OO-Sprachen) haben Sie Klassen und Schnittstellen.
Eine Schnittstelle hat keine Implementierung, es ist nur ein "Vertrag", welche Mitglieder/Methode dieser Typ hat.
Zum Beispiel:
interface Point {
x: number;
y: number;
distance(other: Point): number;
}
Instanzen, die diesen Point
Schnittstelle implementieren müssen zwei Mitglieder der Typennummer haben: x
und y
, und ein Verfahren distance
, die ein number
andere Point
Instanz und gibt empfängt.
Die Schnittstelle implementiert keine von denen.
Klassen sind die Implementierungen:
class PointImplementation implements Point {
public x: number;
public y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
public distance(other: Point): number {
return Math.sqrt(Math.pow(this.x - other.x, 2) + Math.pow(this.y - other.y, 2));
}
}
(code in playground)
In Ihrem Beispiel Sie Ihre Person
Klasse einmal als Klasse behandeln, wenn Sie es und einmal als Schnittstelle erweitern, wenn Sie es implementieren.
Ihr Code:
class Person {
name: string;
age: number;
}
class Child extends Person {}
class Man implements Person {}
Hat ein Übersetzungsfehler zu sagen:
Klasse falsch 'Man' implementiert Schnittstelle 'Person'.
Eigenschaft 'Name' fehlt im Typ 'Man'.
Und das ist, weil Schnittstellen Implementierung fehlt.
Also, wenn Sie implement
eine Klasse dann nur ohne die Umsetzung seinen „Vertrag“ übernehmen, so dass Sie dies tun müssen, werden:
Unterm Strich ist
class NoErrorMan implements Person {
name: string;
age: number;
}
(code in playground), dass die meisten Fälle in Sie wollen extend
eine andere Klasse und nicht implement
es.
, wenn Sie sagen: „' extends'-alles von seiner Mutter bekommt“, ist es für private Mitglieder gelten? Zum Beispiel 'class Person {privater Name: string} class man erweitert Person {gender: string;}' hat 'man' den Namen der Eigenschaft? – davejoem
Private sind auch da. Nur unzugänglich von TS. Mach sie geschützt und du kannst sie benutzen. Bei "Utensilien" ist nur der öffentliche Teil sinnvoll. Hoffe es hilft ein bisschen –