0

Ich studierte die die latest angular code, die in Typoskript und kam zu der folgenden Zeile:wie jeder als customeType

const scope = self as any as ServiceWorkerGlobalScope; 

Was ich nicht verstehe, über oben ist: wenn der Typ selbst Sie jeder warum sollte ist Cast als ServiceWorkerGlobalScope? Warum würden Sie nicht erklären, es genauso ServiceWorkerGlobalScope wie folgt aus:

const scope = self as ServiceWorkerGlobalScope; 

oder

const scope : ServiceWorkerGlobalScope = self; 

Was bedeutet diese Linie? Bedeutet es, dass der Bereich vom Typ "Typ" ist, der am liebsten vom Typ ServiceWorkerGlobalScope ist?

+0

Dies liegt daran, 'self' sicherlich eine Art hat, die nicht die gleiche„Form“hat als' ServiceWorkerGlobalScope' . Also benutzen sie 'any', um ein" formloses "Objekt zu haben und verwenden dann' ServiceWorkerGlobalScope'. –

Antwort

1

Wenn Sie die vereinfachte verwenden:

const scope : ServiceWorkerGlobalScope = self; 

Typoskript die strucutre von self gegen den Typ ServiceWorkerGlobalScope überprüfen. Wenn die Typen inkompatibel sind, erhalten Sie einen Fehler in den folgenden Zeilen:

Typ "Fenster" kann nicht in Typ "ServiceWorkerGlobalScope" konvertiert werden. Eigenschaft '...' fehlt im Typ 'Fenster'.

By self in den any Typen zuerst bewegt, wird der Scheck dann zwischen dem any Typ und dem Typ ServiceWorkerGlobalScope durchgeführt. In diesem Fall ist any kompatibel mit "jeder" anderen Art und es gibt keine Warnungen.

Dies ist der gleiche Fluss, die Behauptungen zu geben gilt, können Sie eine Art Behauptung versuchen:

x = <ServiceWorkerGlobalScope>y 

Aber eine Art Behauptung führt die Überprüfung noch geben. Wenn Sie auf „Opt-out“ der Typprüfung möchten, verwenden Sie die any Typ als Vermittler:

x = <ServiceWorkerGlobalScope><any>y 
Verwandte Themen