Während ich mich mit Typescript beschäftigte, stellte ich fest, dass meine Klassen in Modulen (die als Namespaces verwendet wurden) anderen Klassen nur zur Verfügung standen, wenn ich das export
Schlüsselwort vor ihnen geschrieben hatte, wie z.
module some.namespace.here
{
export class SomeClass{..}
}
Jetzt kann ich den obigen Code folgendermaßen verwenden:
var someVar = new some.namespace.here.SomeClass();
Ich habe mich jedoch nur gefragt, warum dieses Schlüsselwort verwendet wird, anstatt nur das public
Schlüsselwort zu verwenden, das auf Methodenebene verwendet wird, um anzuzeigen, dass auf eine Methode oder Eigenschaft von außen zugegriffen werden sollte. Warum also nicht einfach denselben Mechanismus verwenden, um Klassen und Schnittstellen usw. extern sichtbar zu machen?
Dies würde den resultierenden Code ergeben wie:
module some.namespace.here
{
public class SomeClass{..}
}
quelle
Ein paar Dinge, die Steve Fentons Antwort ergänzen sollten:
export
bedeutet bereits zwei verschiedene Dinge (je nachdem, ob es auf oberster Ebene ist oder nicht); es bedeutet, dass ein Drittel wahrscheinlich schlimmer ist als das Hinzufügen vonpublic
/private
public
vsexport
ist trivial. Wir haben bereits einige Keywords geändert. es ist nicht schwer.export
(unexport
??), daherprivate
ist dies die logische Wahl. Sobald Sie habenprivate
, wäre es etwas verrückt, nichtpublic
als Gegenstück zu wählenexport
zum Ändern der Sichtbarkeit in internen Modulen ist die bestmögliche Ausrichtung mit ES6-Modulenquelle
export class User { name: string }
Eine andere Datei:import {User} from ""./the_file_path_to_the_user_class;
siehe Abschnitt 3.3 der Nativescript-Dokumente hier docs.nativescript.org/angular/tutorial/ng-chapter-3import
der Angabe "Dieser Wert wird nicht exportiert " eine geeignete Verwendung des Schlüsselworts?