Was macht das Schlüsselwort 'is' in Typoskript?

11

Ich stieß auf Code, der so aussieht:

%Vor%

Ich konnte weder in der Dokumentation noch in Google nach is suchen, es ist ein ziemlich häufiges Wort und taucht auf fast jeder Seite auf.

Was macht das Keyword in diesem Kontext?

    
Drew 17.10.2016, 08:06
quelle

2 Antworten

7
%Vor%

Wenn das type-Prädikat "test is string" im obigen Format verwendet wird (anstatt boolesch für den Rückgabetyp zu verwenden), wird nach dem Aufruf von isString (), wenn die Funktion true zurückgibt, TypeScript den Typ auf string eingrenzen in irgendeinem Block, der durch einen Aufruf der Funktion geschützt wird. Der Compiler wird denken, dass foo eine Zeichenfolge in dem unten geschützten Block ist (und NUR in dem folgenden geschützten Block)

%Vor%

Typ-Prädikat wird nur in der Kompilierzeit verwendet. Die Ergebnisdatei .js (Laufzeit) hat keinen Unterschied, da sie den TYP nicht berücksichtigt.

Ich werde die Unterschiede in den folgenden vier Beispielen erläutern.

Zum Beispiel 1: Der obige Beispielcode hat keinen Kompilierfehler und Laufzeitfehler.

Beispiel 2: Der folgende Beispielcode hat einen Kompilierungsfehler (sowie einen Laufzeitfehler), da TypeScript den Typ auf string verengt hat und überprüft hat, dass toExponential nicht zur string-Methode gehört.

%Vor%

z. 3: Der folgende Beispielcode hat keinen Kompilierungsfehler, wird aber einen Laufzeitfehler haben, da TypeScript den Typ NUR im geschützten Block NUR auf String beschränkt, daher wird foo.toExponential keinen Kompilierfehler erzeugen (TypeScript glaubt nicht, dass es sich um einen Zeichenkettentyp handelt) ). In Laufzeit verfügt string jedoch nicht über die toExponential-Methode, daher wird ein Laufzeitfehler auftreten.

%Vor%

z. 4: Wenn wir "test is string" nicht verwenden (Typ-Prädikat), wird TypeScript den Typ im blockierten Block nicht eingrenzen, und der folgende Beispielcode wird keinen Kompilierungsfehler haben, aber einen Laufzeitfehler haben.

%Vor%

Die Schlussfolgerung ist, dass "test is string" (Typprädikat) in der Kompilierzeit verwendet wird, um den Entwicklern mitzuteilen, dass der Code die Möglichkeit haben wird, einen Laufzeitfehler zu haben. Für JavaScript werden die Entwickler den Fehler in der Kompilierungszeit nicht kennen. Dies ist der Vorteil der Verwendung von TypeScript.

    
ARIES CHUI 18.08.2017, 04:05
quelle
2

Die einzige Verwendung, die ich kenne, ist die Ihres Beispiels: Angabe eines "Typprädikats" ( arg is MyType ) in einem benutzerdefinierten Typschutz

Weitere Informationen finden Sie unter Benutzerdefinierter Typschutz in dieser Referenz

Hier finden Sie eine weitere Referenz

    
Bruno Grieder 17.10.2016 09:57
quelle

Tags und Links