Class típusú ellenőrzést géppel

szavazat
107

Én nagyon izgatott géppel , így elkezdtem játszani vele. Mint Actionscript fejlesztő, ez teszi a Javascript kevésbé kemény.

Azonban Actionscript lehetőség van ellenőrizni a típusát futási időben az a kezelő :

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

Lehetséges, hogy érzékeli, ha egy változó (bővíti vagy) egy bizonyos osztály vagy interfész géppel? Én nem találtam semmit róla a nyelvet szemüveg, akkor legyen ott, amikor dolgozik osztályok / interfaces.


Frissítés: Néhány évvel később. Dobtam géppel nagyon gyors, és kezdi el használni Haxe amely lefordítja a kiváló JavaScript és valós típusú ellenőrzést, amely működik osztályok, interfészek, stb is van halott kód eltávolítás, jobb enums, absztrakt típusokat és összeállítja idő függvények (makrók), továbbá összeállítja egy fájlt, így nem kell bonyolult köteg építmények rendszerre van szükség.

A kérdést 08/10/2012 21:47
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
142

4.19.4 A instanceof üzemeltető

Az instanceofüzemeltető előírja, hogy a bal oldali operandus típusúnak Bármely, egy objektum típusú, vagy olyan típusú paraméter típusát, és a jobb oldali operandus típusúnak Bármilyen vagy altípusa „Function” interfész típusát. Az eredmény mindig a Boole ősi típus.

Szóval lehet használni

mySprite instanceof Sprite;

Megjegyzendő, hogy ez az operátor is ActionScript de nem szabad használni ott többé:

Az IS-üzemeltető, amely új ActionScript 3.0 segítségével ellenőrizheti, hogy egy változó vagy kifejezés tagja egy adott típusú adatokat. A korábbi verzióiban ActionScript, az aritmetikai operátor feltéve ezt a funkciót, de ActionScript 3.0 a instanceof operátornak nem kell használni, hogy teszteljék az adattípus tagság. Az az üzemeltető kell használni, hanem a instanceof üzemeltető kézi típus ellenőrzése, mert a kifejezés x instanceof y csupán ellenőrzi a prototípus lánc x létezésére y (és az ActionScript 3.0, a prototípus lánc nem nyújt teljes képet az öröklési hierarchia).

Géppel a instanceofrészvények ugyanazokat a problémákat. Mivel ez egy nyelvet, amely még csak most fejlesztés Azt javaslom, hogy állami javaslatot ilyen létesítmény.

Lásd még:

Válaszolt 08/10/2012 21:54
a forrás felhasználó

szavazat
8

Géppel van egy módja érvényesítése a változó típusát a futás közben. Felvehet egy érvényesítő függvény, amely visszaadja a típusú állítmány . Így hívja ezt a funkciót belsejében egy if, és győződjön meg róla, hogy az összes kódot belül, hogy a blokk biztonságos a használata, mint a típus úgy gondolja, hogy ez.

Példa a géppel 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();
}

További információt lásd: https://www.typescriptlang.org/docs/handbook/advanced-types.html

Válaszolt 21/11/2016 10:42
a forrás felhasználó

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