NEWS
Problem beim Vergleichen
-
Hi,
ich habe das folgende Szenario:const TemperatureDp = "daswetter.0.NextHours.Location_1.Day_1.current.temp_value"; if (TemperatureDp != "") { on("TemperatureDp", function (dp) { Temperature = dp.state.val; log("Current Temperature is " + Temperature); }); }
Ich bekomme aber einen Kompilerfehler:
Operator '!=' cannot be applied to types '"daswetter.0.NextHours.Location_1.Day_1.current.temp_value"' and '""'. const TemperatureDp: "daswetter.0.NextHours.Location_1.Day_1.current.temp_value"
Kann mir bitte jemand helfen? Wieso kommt das? Wie kann ich dieses Vergleich machen?
Danke! -
@mrFenyx sagte:
Ich bekomme aber einen Kompilerfehler:
Das ist kein Compiler-Fehler, sondern der Javascript-Editor meckert fälschlicherweise. Der Code funktioniert, wenn die Variable Temperature auch deklariert wird.
let Temperature = dp.state.val;
-
@paul53 @mrFenyx
Das Problem ist Zeile 2. Der Compiler erkennt, dass TemperatureDp niemals "" sein kann, weil es in der Zeile darüber als konstant definiert und mit einem Wert versehen wird. Die if-Abfrage ist daher sinnlos.@mrFenyx Wenn wir schon dabei sind: Zeile 3 ist ebenfalls murks - entferne die Anführungszeichen um TemperatureDp, sonst wird auf einen nicht existierenden State
"TemperatureDp"
getriggert statt auf"daswetter.0.NextHours.Location_1.Day_1.current.temp_value"
:- on("TemperatureDp", function (dp) { + on(TemperatureDp, function (dp) {
-
@AlCalzone sagte:
Die if-Abfrage ist daher sinnlos.
Das kann die Syntax-Prüfung des Editors erkennen ?
-
@paul53 Da steckt TypeScript dahinter und das kann es, ja
-
@AlCalzone sagte:
das kann es
Danke. Ja, eine Deklaration mit var oder let anstelle von const wird beim Vergleich nicht angemeckert.
-
Danke. Die Frage wäre, was wenn ich TemperatureDp als "" (leer) deklariere. Das ganze ist ein Teil eines Skriptes wo dieses Wert auch leer gelassen sein könnte.
EDIT: habe es als var deklariert und es scheint zu gehen
-
@mrFenyx sagte:
Das ganze ist ein Teil eines Skriptes wo dieses Wert auch leer gelassen sein könnte.
Dann kann die ID aber nicht als Konstante deklariert sein.
Übrigens stört sich der Compiler nicht an dem sinnlosen Vergleich, sondern führt den Code richtig aus.