Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Skripte in Typescript

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Skripte in Typescript

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Milraun last edited by

      Hi,
      ich würde gerne meine Skripte in Typescript schreiben. Das funktioniert für einzelne Skripte auch ganz gut. Wenn ich jedoch mehrere habe werden gleiche Funktionen etc angemeckert. Ich bin bei der Suche nach einer Doku für Typescript leider nicht fündig geworden. Deshalb ein paar Fragen.

      • Wie muss ich meine Skripte organisieren?
      • Wie kann ich etwas aus anderen Skripten (global) importieren?
      • Kann ich mit async/await und Promises arbeiten?
      • Gibt es Beispiele?
      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @Milraun last edited by

        @Milraun sagte in Skripte in Typescript:

        Wenn ich jedoch mehrere habe werden gleiche Funktionen etc angemeckert

        Beispiel?

        Wie muss ich meine Skripte organisieren?

        Nicht anders als JavaScript.

        Wie kann ich etwas aus anderen Skripten (global) importieren?

        Geht nicht. Du kannst globale Skripte im Ordner global ablegen. Diese werden aber einfach im Quelltext intern VOR die anderen Skripte gehängt, d.h. dort definierte Funktionen sind in allen anderen Skripten ebenfalls enthalten.

        Kann ich mit async/await und Promises arbeiten?

        Selbstverständlich. Glaube aktuell sind wir bei TypeScript 3.9, d.h. die ganzen neuen Syntax-Features sind unterstützt.

        Gibt es Beispiele?

        Nein, wofür brauchst du welche?

        M 1 Reply Last reply Reply Quote 0
        • M
          Milraun @AlCalzone last edited by

          @AlCalzone said in Skripte in Typescript:

          @Milraun sagte in Skripte in Typescript:

          Wenn ich jedoch mehrere habe werden gleiche Funktionen etc angemeckert

          Beispiel?

          Ich habe zwei Skripte mit der Funktion init() in common. Bei einem bekomme ich:

          javascript.0 (17880) script.js.common.sonosRadio: TypeScript compilation failed: function init() : void { ^ ERROR: Duplicate function implementation.
          

          wenn ich die Funktion im zweiten Skript umbenenne kompiliert das Skript

          Wie muss ich meine Skripte organisieren?

          Nicht anders als JavaScript.

          Wie kann ich etwas aus anderen Skripten (global) importieren?

          Geht nicht. Du kannst globale Skripte im Ordner global ablegen. Diese werden aber einfach im Quelltext intern VOR die anderen Skripte gehängt, d.h. dort definierte Funktionen sind in allen anderen Skripten ebenfalls enthalten.

          Gut, in der Doku stand, dass man Funktionen mit "declare" deklarieren muss was in Typescript nicht geht. Wenn ich keinen import oder so machen kann habe ich im Editor immer Fehler. Das Skript kompiliert dann trotzdem

          Kann ich mit async/await und Promises arbeiten?

          Selbstverständlich. Glaube aktuell sind wir bei TypeScript 3.9, d.h. die ganzen neuen Syntax-Features sind unterstützt.

          Gibt es Beispiele?

          Nein, wofür brauchst du welche?

          Für Skripte in Typescript. Hab da bisher nicht viel gefunden.

          AlCalzone N 2 Replies Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer @Milraun last edited by

            @Milraun sagte in Skripte in Typescript:

            Bei einem bekomme ich: Duplicate function implementation.

            Interessant... Das dürfte eigentlich nur sein, wenn du in einem global Skript die gleiche Funktion hast.

            Gut, in der Doku stand, dass man Funktionen mit "declare" deklarieren muss was in Typescript nicht geht.

            Doch, müsste gehen. Ich glaube aber das war, bevor für Funktionen in globalen Skripten automatisch Definitionen erzeugt und anderen Skripten bereit gestellt wurde.

            Für Skripte in Typescript. Hab da bisher nicht viel gefunden.

            Machen nicht viele. Hier wäre eins: https://forum.iobroker.net/topic/31211/vorlage-roborock-gen1-einzelraumreinigung-mit-valetudo

            1 Reply Last reply Reply Quote 1
            • N
              noox @Milraun last edited by noox

              Es ist echt schräg - scheinbar kollidieren Konstanten und Funktionsnamen zwischen verschiedene Typescript-Scripten.

              Ich hab mir jetzt mit

              namespace MyNamespaceName {
                  // script code...
              }
              

              geholfen.

              Siehe: https://www.typescriptlang.org/docs/handbook/namespaces.html

              Wobei sich schon die Frage stellt, was im Hintergrund passiert, wenn die Bezeichner von völlig unterschiedlichen Scripten kollidieren.

              AlCalzone 2 Replies Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer @noox last edited by AlCalzone

                @noox sagte in Skripte in Typescript:

                Bezeichner von völlig unterschiedlichen Scripten kollidieren

                Du verwendest nicht zufällig globale Skripte?

                Edit: nein, ich kanns auch bei normalen Skripten nachvollziehen.
                Habe Issue erstellt, schaue ich mir die Tage an, wenn ich dazu komme.
                https://github.com/ioBroker/ioBroker.javascript/issues/627

                AlCalzone created this issue in ioBroker/ioBroker.javascript

                closed TypeScript doesn't allow two identically named variables (etc.) in seperate scripts #627

                1 Reply Last reply Reply Quote 1
                • AlCalzone
                  AlCalzone Developer @noox last edited by

                  @noox Lass mich raten, du verwendest in den betroffenen Skripten kein import?

                  In TypeScript, just as in ECMAScript 2015, any file containing a top-level import or export is considered a module. Conversely, a file without any top-level import or export declarations is treated as a script whose contents are available in the global scope (and therefore to modules as well).

                  Ein Workaround wäre, in den Dateien export {} zu ergänzen, dann verschwindet der Fehler. In einer kommenden Version wird der Adapter das auch selbst machen.

                  N 1 Reply Last reply Reply Quote 0
                  • N
                    noox @AlCalzone last edited by

                    @AlCalzone said in Skripte in Typescript:

                    @noox Lass mich raten, du verwendest in den betroffenen Skripten kein import?

                    Stimmt. Hab kein import verwendet. Mein letzte großes Angular/TypeScript-Projekt ist schon wieder 2 Jahre her und ich hab schon wieder viel zu viel vergessen 😞

                    Würde das heißen, dass ich mit import und export Scripts wiederverwenden könnte? Ich habe doch immer wieder Code-Teile, die ich in ein paar Scripte gerne wiederverwenden möchte, aber für global einfach zu viel sind.

                    AlCalzone 1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer @noox last edited by

                      @noox sagte in Skripte in Typescript:

                      Würde das heißen, dass ich mit import und export Scripts wiederverwenden könnte?

                      Nein, du kannst nur node-Module per import einbinden. Skripte wiederverwenden (bzw. Skript-Module) erfordern ein Node.js-Feature was nur experimentell ist.
                      export in Skripten ist ohne Funktion (außer TypeScript zu überreden, dem Skript sein eigenes Scope zu geben).

                      1 Reply Last reply Reply Quote 1
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      483
                      Online

                      31.8k
                      Users

                      80.0k
                      Topics

                      1.3m
                      Posts

                      javascript
                      3
                      9
                      2196
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo