Warum akzeptiert typescript einen Zahlenwert als Typ?

7

Ich hatte einen Bug in meinem Angular 4 Projekt, wo ich eine Variable deklariert hatte:

%Vor%

statt

%Vor%

Also natürlich war dieser.debounce vor der Behebung nicht definiert.

Sollte Typoskript mir in diesem Fall keinen Fehler geben?

    
user2987663 02.11.2017, 13:11
quelle

4 Antworten

17

Wenn Sie eine Variable mit einer Typ-Annotation von 300 deklarieren, bedeutet das, dass nicht nur der Typ numerisch ist, sondern nur der Wert 300 zulässig ist:

%Vor%

Sie erhalten einen Fehler, wenn Sie versuchen, sagen, 200:

%Vor%

Schalten Sie strenge Null-Prüfungen ein, und der Compiler wird diese Art von Problem erkennen (Sie wollten den Wert zuweisen, keine Typ-Annotation):

%Vor%

Wenn Sie in diesem Fall versuchen, die Variable zu verwenden , weisen strikte Null-Checks darauf hin, dass Sie nie einen Wert zugewiesen haben. Sie sagen also, dass Sie eine Annotation und keine Zuweisung gemacht haben.

    
Fenton 02.11.2017, 13:16
quelle
9

Sie können (fast) alles als Werttyp an Typescript übergeben. Also wenn du sagst:

%Vor%

Sie erhalten einen Typfehler, da Typoskript erwartet, dass der Wert für Debounce 300 , 500 oder 700 ist, nicht irgendeine Zahl. Dies bedeutet, dass Sie genauere Angaben zu Typanmerkungen machen können.

    
Osman Cea 02.11.2017 13:18
quelle
1

Diese Zeile ist korrekt, weil Sie unbeabsichtigt literal-types ( für weitere Informationen verwendet haben) >):

Dieses Beispiel hilft Ihnen zu verstehen, wie% co_de ist % wird verwendet, um Variablen auf eine endliche Menge möglicher Werte zu beschränken :

%Vor%     
CoyBit 16.11.2017 13:53
quelle
0

Es ist nicht eine konstante Deklaration. Sie haben eine Variable deklariert und einen implizit typisierten Wert zugewiesen. Sie liegen falsch. Es ist number type-Deklaration, die nur bestimmte Werte akzeptiert.

%Vor%

und weisen Sie es dann mit

zu %Vor%

Typescript gibt Ihnen keinen Fehler, weil es syntaktisch korrekt ist, aber Laufzeitfehler folgen für undefined Variablen.

    
Roman C 02.11.2017 13:28
quelle

Tags und Links