Je suis très enthousiaste à propos de TypeScript , alors j'ai commencé à jouer avec lui. En tant que développeur ActionScript, cela rend JavaScript moins difficile.
Toutefois, dans Actionscript, il est possible de vérifier le type en cours d'exécution à l'aide de l' opérateur :
var mySprite:Sprite = new Sprite(); trace(mySprite is Sprite); // true trace(mySprite is DisplayObject);// true trace(mySprite is IEventDispatcher); // true
Est-il possible de détecter si une variable (extends ou) est une certaine classe ou interface avec TypeScript? Je n'ai rien trouvé à ce sujet dans les spécifications linguistiques, il devrait être là quand il travaille avec des classes / interfaces.
Mise à jour: quelques années plus tard. J'ai abandonné TypeScript très rapidement et j'ai commencé à utiliser Haxe qui compile un excellent JavaScript et possède une véritable vérification de type qui fonctionne sur les classes, les interfaces, etc. Le retrait du code mort, les énormes énumérations, les types abstraits et les fonctions de temps de compilation (macros) compilent également À un seul fichier, il n'est donc pas nécessaire de créer un système de compilation complexe.
- Méthode .click (), prise en charge du navigateur
- Exclure le module de la minification de la boîte à outils
- AngularUI-Bootstrap's Typeahead ne peut pas lire `length` Propriété de` undefined`
- Comment effacer le champ de texte sur le focus du champ de texte
- Obtenez la hauteur d'un élément moins le rembourrage, la marge, les largeurs de bordure
4.19.4 L'instance de l'opérateur
L'
instanceof
opérateur exige que l'opérande gauche soit du type Any, un type d'objet ou un type de type de type, et l'opérande droit soit du type Any ou un sous-type du type d'interface 'Function'. Le résultat est toujours du type primitif booléen.
Donc, vous pourriez utiliser
mySprite instanceof Sprite;
Notez que cet opérateur est également dans ActionScript, mais il ne devrait plus être utilisé ici:
L'opérateur, qui est nouveau pour ActionScript 3.0, vous permet de tester si une variable ou une expression est un membre d'un type de donnée donné. Dans les versions précédentes d'ActionScript, l'instance de l'opérateur a fourni cette fonctionnalité, mais dans ActionScript 3.0, l'opérateur instanceof ne doit pas être utilisé pour tester l'appartenance au type de données. L'opérateur doit être utilisé à la place de l'opérateur instanceof pour la vérification manuelle du type, car l'expression x instance de y vérifie simplement la chaîne prototype de x pour l'existence de y (et dans ActionScript 3.0, la chaîne prototype ne fournit pas une image complète de La hiérarchie des héritages).
L' instanceof
de TypeScript partage les mêmes problèmes. Comme c'est une langue qui est encore dans son développement, je vous recommande de présenter une proposition de cette facilité.
Voir également:
TypeScript a un moyen de valider le type de variable dans l'exécution. Vous pouvez ajouter une fonction de validation qui renvoie un prédicat de type . Vous pouvez donc appeler cette fonction dans une déclaration if, et assurez-vous que tout le code à l'intérieur de ce bloc est sûr d'utiliser comme type que vous pensez.
Exemple à partir des documents TypeScript:
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(); }
Voir plus à l' adresse suivante : https://www.typescriptlang.org/docs/handbook/advanced-types.html