Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Typprüfung mit javascript.d.ts

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Typprüfung mit javascript.d.ts

Typprüfung mit javascript.d.ts

Scheduled Pinned Locked Moved Skripten / Logik
40 Posts 3 Posters 4.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    wrote on last edited by
    #27

    So etwas getestet.

    Neuer Ordner, zwei Testdateien angelegt (test.js und test.d.ts).

    Es verhält sich schon anders als bei Dir, aber besser als in meiner Arbeitsumgebung.

    Die Funktion wird während des tippens nicht vorgeschlagen.

    Erst, wenn ich "Klammer auf" drücke erscheint die Beschreibung.

    327_typecheck_5.png

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Reply Last reply
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      wrote on last edited by
      #28

      Die gleichen Dateien in einem Arbeitsordner in meinem Skript Arbeitsverzeichnis:

      327_typecheck_6.png

      Wenn ich nun die "Klammer auf drücke, wird abc gegen AbortController( ersetzt.

      Wenn ich das nicht will, muss ich direkt nach abc die [ESC] Taste drücken.

      Du hast require("fs"); in der *.d.ts Datei gesetzt. Reicht das aus Deiner Sicht dort?

      Ich hätte das jetzt bei jedem Skript davor gesetzt.

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Reply Last reply
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        wrote on last edited by
        #29

        In meinem Arbeitsbereich verhält sich vscode total schizophren :shock:

        327_typecheck_7.png

        tippe ich abc ein kommen andere Vorschläge.

        Ich muss ESC drücken, damit mit der Klammer auf das abc nicht durch einen Vorschlag ersetzt wird.

        In diesem Moment erscheint der Hilfetext zur Funktion abc().

        Gleichzeitig wird abc unterstrichen und angemeckert, dass die Funktion unbekannt ist.

        Verlasse ich einmal die Klammern () verschwindet der Hilfetext und tauch auch nicht mehr auf.

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Reply Last reply
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          wrote on last edited by
          #30

          Schau dir mal meinen Screenshot bzw. javascript.d.ts genau an. Auch diese Datei muss in ein Modul "gezwungen" werden. Anders als bei JS reicht require nicht aus, es muss das import keyword fallen.

          // entweder so
          import * as fs from "fs";
          // oder so
          import fs = require("fs");
          

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Reply Last reply
          0
          • R Offline
            R Offline
            robsdobs
            wrote on last edited by
            #31

            Hallo,

            ich hab auch noch mal eine Frage…

            Wenn ich am Anfang der Datei die Referenz auf die Definitionsdatei setze

            /// 
            

            klappt das im VS Code super, aber im IOBroker Admin bekomme ich beim Compilieren dann natürlich einen Fehler:

            12:40:00.730	[error]	javascript.0 script.js.common.xTest_ts: TypeScript compilation failed: /// ^ ERROR: File '/opt/iobroker/node_modules/iobroker.javascript/common/javascript.d.ts' not found. 
            

            Daher muss ich das vorher immer bearbeiten (mache aus den /// ein ////) oder habe Pech - wenn ich das vergesse. Da ich mit dem "js2fs" plugin arbeite muss ich das immer vor jedem Speichern im VS Code machen - wo das vergessen schon mal häufiger passiert.

            Gibt es hier einen besseren Weg?

            Danke & Gruß

            Robert

            Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

            1 Reply Last reply
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              wrote on last edited by
              #32

              Du arbeitest scheinbar mit TypeScripts.

              Der TypeScript-Modus lädt die Datei automatisch für dich, da sie bereits in den JavaScript-Adapter integriert ist und TypeScript zwangsläufig diese Definitionen benötigt.

              Du musst VSCode nur beibringen, dass es sich bei deiner Ordnerstruktur um ein Projekt handelt. Das geht mit einer leeren tsconfig.json im Hauptordner, danach werden .d.ts-Dateien automatisch eingebunden:
              1097_unbenannt.png
              Besser ist natürlich eine passende tsconfig.json, z.B. für NodeJS 4+

              {
              	"compilerOptions": {
              		"target": "es5",
              		"lib": [
              			"es6",
              		]
              	},
              }
              

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Reply Last reply
              0
              • R Offline
                R Offline
                robsdobs
                wrote on last edited by
                #33

                Danke, werde ich heute Abend ausprobieren.

                Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

                1 Reply Last reply
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  wrote on last edited by
                  #34

                  @AlCalzone:

                  Schau dir mal meinen Screenshot bzw. javascript.d.ts genau an. Auch diese Datei muss in ein Modul "gezwungen" werden. Anders als bei JS reicht require nicht aus, es muss das import keyword fallen.

                  // entweder so
                  import * as fs from "fs";
                  // oder so
                  import fs = require("fs");
                  ```` `  
                  

                  Verrückt. kaum macht man es richtig, funktioniert es. Nun ja, fast 😉

                  Beim Testordner mit der Funktion abc() funktioniert es nun einwandfrei.

                  Nur mein eigentlicher Arbeitsbereich macht die Selben Probleme, wie oben beschrieben.

                  Dort werden die Funktionen zwar erkannt, die Parameter aber weiterhin mit any angezeigt und ohne Beschreibung.

                  Zur Eingrenzung habe ich dann meine globale Typedatei in den Testordner mit der abc() Funktion kopiert.

                  Hier funktionieren die Funktionen aus der globalen Datei auch einwandfrei.

                  Zur weiteren Eingrenzung habe ich dann auch die jsonconfig.json in den Testordner kopiert, um sicherzustellen, dass die Probleme nicht durch diese Datei kommen. Auch hier funktioniert es einwandfrei.

                  Problem gefunden

                  argh… während ich das hier tippe habe ich dann noch den Ordner global mit den globalen Skripten in den Testordner reinkopiert.

                  In diesem Moment funktioniert es nicht mehr sauber. :oops:

                  Die globalen Funktionen haben noch nicht das require("fs"); am Anfang des Skripts.

                  Werde dann jetzt erst einmal alle Skripte mit dem require("fs");versehen... sind ein paar... 🙂

                  Danke für Deine Mühe!!!

                  Adapter: Fritzbox, Unify Circuit
                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                  1 Reply Last reply
                  0
                  • R Offline
                    R Offline
                    robsdobs
                    wrote on last edited by
                    #35

                    Danke, bei mir funktioniert es prinzipiell.

                    Jetzt habe ich jedoch ein anderes Problem festgestellt:
                    1367_2018-04-03_21h34_40.png

                    Das fehlt in der javascript.d.ts tatsächlich.

                    In der Doku steht: "Same as javascript setTimeout."

                    Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

                    1 Reply Last reply
                    0
                    • AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      wrote on last edited by
                      #36

                      @robsdobs:

                      Das fehlt in der javascript.d.ts tatsächlich.

                      In der Doku steht: "Same as javascript setTimeout." `
                      Korrekt, das kommt auch nicht in die javascript.d.ts, da es sich um Grundfunktionalität handelt. Dein Problem scheint aufzutreten, wenn im Ordner eine tsconfig.json existiert. Warum auch immer.

                      Beheben kannst du es, indem du die NodeJS-Typings im Arbeitsbereich installierst.

                      npm i @types/node
                      
                      

                      für die neueste Version, bzw.

                      npm i @types/node@4
                      

                      für NodeJS 4.

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      1 Reply Last reply
                      0
                      • AlCalzoneA Offline
                        AlCalzoneA Offline
                        AlCalzone
                        Developer
                        wrote on last edited by
                        #37

                        Wen es interessiert, ich habe den VSCode-Editor ("Monaco") in den Skriptadapter eingebaut.

                        Das ganze benötigt noch ein wenig Arbeit, da insbesondere der Wechsel von Blockly zu JS nicht funktioniert. Aber wer das nicht benötigt, darf gerne schon mal testen:

                        Installation aus eigener URL: https://github.com/AlCalzone/ioBroker.j … ter-editor

                        --

                        1097_unbenannt.png

                        –

                        1097_unbenannt2.png

                        –

                        1097_bild1.png

                        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                        1 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          robsdobs
                          wrote on last edited by
                          #38

                          Super Sache!

                          Ich vermute mal das ist unabhängig vom Editor. Mit der Version 3.7.0 des Javascript Adapters funktionieren jetzt leider meine Scripte alle nicht. Es kommt beim Starten überall der Fehler "ReferenceError: exports is not defined":

                          javascript.0	2018-05-18 20:19:02.802	error	at ContextifyScript.Script.runInContext (vm.js:35:29)
                          javascript.0	2018-05-18 20:19:02.802	error	at script.js.common.Status.Stauberechnung_ts:2:23
                          javascript.0	2018-05-18 20:19:02.802	error	ReferenceError: exports is not defined
                          javascript.0	2018-05-18 20:19:02.802	error	^
                          javascript.0	2018-05-18 20:19:02.802	error	Object.defineProperty(exports, "__esModule", { value: true });
                          javascript.0	2018-05-18 20:19:02.800	error	script.js.common.Status.Stauberechnung_ts: script.js.common.Status.Stauberechnung_ts:2
                          javascript.0	2018-05-18 20:19:02.796	info	script.js.common.Status.Stauberechnung_ts: TypeScript compilation successful
                          javascript.0	2018-05-18 20:19:02.686	info	script.js.common.Status.Stauberechnung_ts: compiling TypeScript source...
                          javascript.0	2018-05-18 20:19:02.686	error	at ContextifyScript.Script.runInContext (vm.js:35:29)
                          javascript.0	2018-05-18 20:19:02.685	error	at script.js.common.Status.TüreFenster_ts:2:23
                          javascript.0	2018-05-18 20:19:02.685	error	ReferenceError: exports is not defined
                          javascript.0	2018-05-18 20:19:02.685	error	^
                          javascript.0	2018-05-18 20:19:02.685	error	Object.defineProperty(exports, "__esModule", { value: true });
                          javascript.0	2018-05-18 20:19:02.685	error	script.js.common.Status.TüreFenster_ts: script.js.common.Status.TüreFenster_ts:2
                          javascript.0	2018-05-18 20:19:02.680	info	script.js.common.Status.TüreFenster_ts: TypeScript compilation successful
                          javascript.0	2018-05-18 20:19:02.501	info	script.js.common.Status.TüreFenster_ts: compiling TypeScript source...
                          javascript.0	2018-05-18 20:19:02.501	error	at ContextifyScript.Script.runInContext (vm.js:35:29)
                          javascript.0	2018-05-18 20:19:02.501	error	at script.js.common.System.AlarmControl_ts:2:23
                          javascript.0	2018-05-18 20:19:02.501	error	ReferenceError: exports is not defined
                          javascript.0	2018-05-18 20:19:02.501	error	^
                          javascript.0	2018-05-18 20:19:02.500	error	Object.defineProperty(exports, "__esModule", { value: true });
                          javascript.0	2018-05-18 20:19:02.489	error	script.js.common.System.AlarmControl_ts: script.js.common.System.AlarmControl_ts:2
                          javascript.0	2018-05-18 20:19:02.486	info	script.js.common.System.AlarmControl_ts: TypeScript compilation successful
                          javascript.0	2018-05-18 20:19:02.420	info	script.js.common.System.AlarmControl_ts: compiling TypeScript source...
                          

                          Hab mal ein Issue auf https://github.com/ioBroker/ioBroker.javascript/issues/118 eröffnet.

                          Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

                          1 Reply Last reply
                          0
                          • AlCalzoneA Offline
                            AlCalzoneA Offline
                            AlCalzone
                            Developer
                            wrote on last edited by
                            #39

                            Fixed in https://github.com/ioBroker/ioBroker.ja … t/pull/119

                            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                            1 Reply Last reply
                            0
                            • R Offline
                              R Offline
                              robsdobs
                              wrote on last edited by
                              #40

                              Danke!

                              Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              603

                              Online

                              32.4k

                              Users

                              81.3k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe