Class soort controle met typoscript

stemmen
107

Ik ben erg enthousiast over het typoscript , dus ik begon te spelen. Als een Actionscript ontwikkelaar, het maakt Javascript minder hard.

In Actionscript is het mogelijk om het type tijdens de uitvoering controleren met de operator is :

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

Is het mogelijk om te detecteren of een variabele (uit- of) is een bepaalde klasse of aansluiting met de schrijfmachine? Ik kon er niets over in de taal specs vinden, moet er bij het werken met lessen / interfaces.


Update: Een paar jaar later. Ik liet typoscript zeer snel en gaan gebruiken Haxe die compileert om uitstekende JavaScript en heeft echte soort controle die werkt op klassen, interfaces etc. Ook heeft dead-code te verwijderen, beter opsommingen, abstracte klasse en het compileren functies (macro's), stelt tevens één bestand, zodat geen ingewikkelde bundel build systeem nodig.

De vraag is gesteld op 08/10/2012 om 21:47
bron van user
In andere talen...                            


2 antwoorden

stemmen
142

4.19.4 De operator instanceof

De instanceofoperator moet de linker operand type een, een objecttype of een type parameter type zijn en het recht operand van Elk willekeurig type of subtype van de 'Function' type interface zijn. Het resultaat is altijd van de Booleaanse primitieve type.

Dus je zou kunnen gebruiken

mySprite instanceof Sprite;

Merk op dat deze operator is ook in ActionScript, maar het mag er niet meer worden gebruikt:

De operator is, die nieuw in ActionScript 3.0, kunt u testen of een variabele of expressie lid is van een bepaald gegevenstype. In eerdere versies van ActionScript, de operator instanceof op voorwaarde dat deze functionaliteit, maar in ActionScript 3.0 de instanceof operator niet mag worden gebruikt om te testen op data type lidmaatschap. De operator moet worden in plaats van de instanceof aandrijving op handmatige type checking, omdat de uitdrukking x instanceof y alleen controleert de prototypeketen van x voor het bestaan ​​van y (en ActionScript 3.0, de prototypeketen geen volledig beeld van verstrekken de erfenis hiërarchie).

Typoscript van instanceofde aandelen van de dezelfde problemen. Want het is een taal die nog steeds in zijn ontwikkeling adviseer ik u om een voorstel van een dergelijke faciliteit te vermelden.

Zie ook:

antwoordde op 08/10/2012 om 21:54
bron van user

stemmen
8

Typescript een manier valideren het type van een variabele runtime. U kunt een valideren functie die een rendement toe te voegen soort predikaat . Zo kunt u deze functie aan te roepen in een if-statement, en zorg ervoor dat alle code in dat blok is veilig om te gebruiken als het type dat u denkt dat het is.

Voorbeeld uit de getypte documenten:

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();
}

Zie voor meer informatie naar: https://www.typescriptlang.org/docs/handbook/advanced-types.html

antwoordde op 21/11/2016 om 10:42
bron van user

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