TypeScript verwenden: 'focus' does not exist on type 'never'

  • Affected Version
    WoltLab Suite 5.4
    Affected App
    WoltLab Suite Core

    Ich bin gerade an meinen ersten Gehversuche mit TypeScript im WSC. Da es mir noch nicht ganz klar ist wie der WSC mit dem umgeht wenn ich es in einem Plugin verwenden möchte, habe ich mich mal als erstes daran versucht und wollte es einfach fürs WSC "aktivieren".

    Als ich die beiden Dateien erstellt habe habe ich mittels npm install die Daten herunterladen lassen und wollte diese dann mit npx tsc kompilieren (Danke Tim Düsterhus für deine Unterstützung). Nun erhalte ich jedoch gleich diesen Fehler

    Code
    # npx tsc
    node_modules/@woltlab/wcf/ts/WoltLabSuite/Core/Ui/Dropdown/Simple.ts:243:23 - error TS2339: Property 'focus' does not exist on type 'never'.
    
    243         firstListItem.focus();
                              ~~~~~
    
    
    Found 1 error.

    Habe ich hier etwas falsch gemacht/vergessen? Sollte es kein Fehler sein kann man das Thema auch gerne in den Bereich Pluginentwicklung verschieben.

    Vielen Dank für eure Unterstützung.

    Edited 2 times, last by beMananas (July 22, 2021 at 11:53 AM).

  • Alexander Ebert July 22, 2021 at 11:25 AM

    Changed the title of the thread from “TypoScript verwenden: 'focus' does not exist on type 'never'” to “TypeScript verwenden: 'focus' does not exist on type 'never'”.
  • Hallo,

    bin ich auch schon einmal drüber gestolpert, ich hatte aber noch keine Gelegenheit mir das näher anzusehen.

    Ist auf jeden Fall kein Fehler von dir, ist ein Fehler von uns. Die Meldung kannst du insofern ignorieren, als, dass der TypeScript-Compiler auch bei Typfehlern gültiges JavaScript erzeugt.

  • Tim Düsterhus July 22, 2021 at 11:47 AM

    Added the Label Confirmed
  • Danke dir.

    Dann muss ich trotzdem mal blöd fragen. Kann ich irgendwie prüfen ob es funktioniert hat?

    Die TypeScript dateien werden ja in normale JS Dateien konvertiert. Müsste ich dann aber im Ordner /js nicht entsprechend erkennen das die Dateien mindestens einen neuen Zeitstempel aufweisen?

  • Vielen Dank. Dann war ich wohl komplett auf dem Holzweg. Ich glaube ich habe mich da verrannt. Als ich den Artikel in der Dokumentation gesehen habe bin ich davon ausgegangen das TypeScript erst verwendet wird wenn es über npm/npx installiert wird.

    Ich muss mir mal noch weitere Informationsquellen durchlesen.

    Quote

    After this initial set-up, you would place your TypeScript source files into the ts/ folder of your project. The generated JavaScript target files will be placed into files/js/ and thus will be installed by the file PIP.

    Ich dachte hiermit ist gemeint das bei der installation einer App die Dateien aus dem ts File verwendet werden.

    Btw. Ich bin ehrlich gesagt davon ausgegangen das die require/exports Bereiche im WSC5.4 neu so drin sind und habe es für ein neues Plugin übernommen. Wäre es besser gewesen TypeScript Dateien zu erstellen und diese dann zu kompilieren und so im Plugin einzufügen?

  • Hallo,

    Ich dachte hiermit ist gemeint das bei der installation einer App die Dateien aus dem ts File verwendet werden.

    nein, das TypeScript kompilieren wir im Rahmen der Entwicklung und commiten dann auch das erzeugte JavaScript. Im Endresultat ändert sich nichts, außer, dass das JavaScript nicht von Hand geschrieben wurde, sondern „automatisch“ aus dem TypeScript entsteht. Alternativ kannst du das Kompilieren des TypeScripts auch in den PackageBuild-Prozess integrieren.

    Mit dem npm install installierst du die notwendigen Bibliotheken und Programme, wie beispielsweise den TypeScript-Compiler („tsc“). Mit npx tsc führst du dann den Compiler aus, der liest die Konfiguration aus der tsconfig.json und erzeugt dann das passende JavaScript.

    Wäre es besser gewesen TypeScript Dateien zu erstellen und diese dann zu kompilieren und so im Plugin einzufügen?

    Die Verwendung von TypeScript können wir nur empfehlen, es ist bequemer und verhindert Fehler. Du kannst natürlich auch weiterhin manuell passendes JavaScript schreiben. Der TypeScript-Compiler macht letztlich ja auch nichts anderes.

  • Die Verwendung von TypeScript können wir nur empfehlen, es ist bequemer und verhindert Fehler. Du kannst natürlich auch weiterhin manuell passendes JavaScript schreiben. Der TypeScript-Compiler macht letztlich ja auch nichts anderes.

    Das kann ich nur unterschreiben und muss mich bei euch für die Umstellung nicht nur bedanken, ich müsste euch allen auch was zum Essen ausgeben. Ach ist das schön mit TypeScript, endlich verstehe ich die doofen JavaScript-Meldungen, wenn was nicht geht. :D

  • Ich stehe hier noch am Anfang aber schon von den ersten Tutorials scheint es wirklich viel Einfacher zu sein.

    Aktuell generiere ich die JS testweise noch mit PhpStorm.

    Da ich von GitLab auf GitHub wechsle muss ich eh ein neues BuildScript erstellen. Denke das sollte sich mit den Actions machen lassen. Dann kann ich das auch gleich versuchen zu integrieren

  • Das kann ich nur unterschreiben und muss mich bei euch für die Umstellung nicht nur bedanken, ich müsste euch allen auch was zum Essen ausgeben. Ach ist das schön mit TypeScript, endlich verstehe ich die doofen JavaScript-Meldungen, wenn was nicht geht. :D

    Dem kann ich mich nur anschließen. Ich habe nun fast alle meine Plugins auf TypeScript umgestellt und kann das jedem Entwickler sehr empfehlen. Es erspart einfach so viel Arbeit und man macht dadurch auch weniger Fehler :)

  • Aktuell generiere ich die JS testweise noch mit PhpStorm.

    Du kannst da ja auch weiterhin PhpStorm verwenden, was sich sogar anbietet während der Entwicklung und es läuft zuverlässig.

  • Tim Düsterhus July 22, 2021 at 5:05 PM

    Set the Label from Confirmed to Fixed

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!