Klasse Typprüfung mit Typoskript

stimmen
107

Ich bin sehr aufgeregt über Typoskript , also fing ich an , mit ihm zu spielen. Als Actionscript Entwickler, macht es Javascript weniger hart.

Doch in Actionscript ist es möglich , die Art zur Laufzeit mit dem überprüfen , heißen Betreiber :

var mySprite:Sprite = new Sprite(); 
trace(mySprite is Sprite); // true 
trace(mySprite is DisplayObject);// true 
trace(mySprite is IEventDispatcher); // true

Ist es möglich, zu erkennen, ob eine Variable (erweitert oder) eine bestimmte Klasse oder Schnittstelle mit Typoskript ist? Ich kann nichts darüber in den Sprachdaten finden, soll es dabei sein, wenn mit Klassen / Schnittstellen arbeiten.


Update: Ein paar Jahre später. Ich Typoskript fiel sehr schnell und starten Sie mit Haxe , die ausgezeichnete JavaScript kompiliert und hat echte Typprüfung , die auf Klassen arbeitet, Schnittstellen etc. Auch Dead-Code Entfernung hat, besser Aufzählungen, abstrakte Typen und Zeitfunktionen (Makros) kompilieren, erstellt auch zu einer Datei , so wird kein komplexes Bündel Build - System benötigt.

Veröffentlicht am 08/10/2012 um 21:47
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
142

4.19.4 Der Operator instanceof

Der instanceofBediener erfordert die linken Operanden vom Typ Any oder einem Subtyp des ‚Funktion‘ Schnittstellentypen beliebig, ein Objekttyp oder einem Typ - Parameter - Typ, und der rechte Operand ist als Typ. Das Ergebnis ist immer der Booleschen Urtyp.

So könnten Sie

mySprite instanceof Sprite;

Beachten Sie, dass dieser Operator auch in Actionscript, aber es sollte nicht mehr da verwendet werden:

Das heißt Operator, der für Actionscript 3.0 neu ist, können Sie testen, ob eine Variable oder ein Ausdruck ist Mitglied eines Datentyps gegeben. In früheren Versionen von Actionscript, sofern der Operator instanceof diese Funktionalität, aber in Actionscript 3.0 der Operator instanceof sollte nicht verwendet wird für den Datentyp Mitgliedschaft zu testen. Das ist Betreiber sollte anstelle des instanceof-Operator für die manuelle Typprüfung verwendet werden, da der Ausdruck Instanceof x y lediglich die Prototypkette von x für die Existenz von y überprüft (und in Actionscript 3.0, wird der Prototypkette liefern kein vollständiges Bild von die Vererbungshierarchie).

Typoskript der instanceofAktien die gleichen Probleme. Da es sich um eine Sprache, die in seiner Entwicklung noch ist empfehle ich Ihnen einen Vorschlag einer solchen Anlage zu äußern.

Siehe auch:

Beantwortet am 08/10/2012 um 21:54
quelle vom benutzer

stimmen
8

Typoskript haben einen Weg , um den Typ einer Variablen zur Laufzeit der Validierung. Sie können eine Validierung Funktion hinzufügen , die ein zurückgibt Typen Prädikat . So können Sie diese Funktion in einer if - Anweisung aufrufen, und sicher sein , dass der gesamte Code innerhalb dieses Blocks sicher ist als Typ zu verwenden , denken Sie , es ist.

Beispiel aus dem Typoskript docs:

function isFish(pet: Fish | Bird): pet is Fish {
   return (<Fish>pet).swim !== undefined;
}

// Both calls to 'swim' and 'fly' are now okay.
if (isFish(pet)) {
  pet.swim();
}
else {
  pet.fly();
}

Mehr unter: https://www.typescriptlang.org/docs/handbook/advanced-types.html

Beantwortet am 21/11/2016 um 10:42
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more