Private "Funktionen" in TypeScript
Ist es möglich, erstellen Sie eine private Funktion "" (- Methode) innerhalb eines Typoskript-Klasse? Nehmen wir an wir haben die folgenden Person.ts
Transcript:
class Person {
constructor(public firstName: string, public lastName: string) {
}
public shout(phrase: string) {
alert(phrase);
}
private whisper(phrase: string) {
console.log(phrase);
}
}
Welche, wenn Sie kompiliert wird transformiert, um die folgenden:
var Person = (function () {
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Person.prototype.shout = function (phrase) {
alert(phrase);
};
Person.prototype.whisper = function (phrase) {
console.log(phrase);
};
return Person;
})();
Beobachtungen
Ich hatte erwartet, die whisper
Funktion deklariert werden innerhalb der closure, aber nicht auf dem Prototyp? Im wesentlichen macht die whisper
Funktion der öffentlichkeit bei der Kompilierung?
InformationsquelleAutor der Frage Richard | 2013-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Niederschrift öffentliche/private Stichwörter nur für den Weg Typoskript prüft Ihren code - Sie don ' T haben keine Auswirkungen auf die JavaScript-Ausgabe.
Laut die Sprachspezifikation (S. 9-10):
Dies wurde bereits gefragt und beantwortet hier: https://stackoverflow.com/a/12713869/1014822
Update: Diese alte Antwort noch bekommt eine Menge Verkehr, so ist erwähnenswert, dass, zusätzlich zu der Sprache, die spec-link oben, öffentliche, private und (jetzt) protected-Elemente werden ausführlich in dem Typoskript Handbuch Kapitel über Klassen.
2018 Update
Umsetzung von ES Private Felder ist nun ein Zukünftiger Artikel auf dem Typoskript Fahrplan obwohl Diskussion schlägt vor, dies wird eine parallele hard private option, aber nicht als Ersatz für die aktuelle soft private Umsetzung.
InformationsquelleAutor der Antwort JcFx
In Javascript (im Gegensatz zu TypeScript), können Sie nicht eine private "Mitglied" - Funktion.
Wenn Sie definieren eine private Funktion, die in der Schließung, werden Sie nicht in der Lage, es zu nennen, wie eine Instanz-Methode auf eine Instanz der Klasse.
Wenn das, was Sie wollen, bewegen Sie einfach die Typoskript-Funktion, definition außerhalb der Klasse Körper.
InformationsquelleAutor der Antwort SLaks