Website-Suche

typescript - Entfernen von --always-strict aus 'tsconfig.json' in einem ESM-Modul


ESM & "use strict"


Seit der Veröffentlichung der folgenden tsconfig.json-Flags...

  • $ tsc --module "Node16"
  • $ tsc --moduleResolution "Node16"

...Ich habe nur ES6-standardisierte JavaScript-Module in "TypeScript" geschrieben. Meines Wissens ist das Hinzufügen von "use strict"; zu einem JavaScript-Dokument wie das Hinzufügen einer Parsing-Direktive zum Dokument (es könnte sogar eine Parsing-Direktive sein, ich weiß es wirklich nicht). Die eindeutige Anweisung teilt der JavaScript-Engine (wenn die JS-Engine die Anweisung interpretiert) mit, dass bestimmte Regeln durchgesetzt werden sollen.

Die "use strict"-Regeln umfassen, sind aber nicht beschränkt auf...

  • arguments.callee ist nicht erlaubt
  • Das with-Schlüsselwort ist nicht erlaubt
  • Die Schlüssel eines Objekts müssen einzigartig sein
  • und einige andere, an die ich mich gerade nicht erinnern kann...

2B Frank, die Einzelheiten von "use strict" sind im Kontext dieser Frage nicht so wichtig. Was wirklich zählt, ist mein Verständnis davon, wie die Use-Strict-Regeln in ES-Modulen implementiert werden. Soweit ich weiß, sind sie Teil der Spezifikation des ESM-Standards, und daher gibt es keinen Grund, dass "use strict"; zu Dateien in einem ES-Modul hinzugefügt werden muss.

Das TSC---alwaysStrict-Flag


Laut den TypeScriptLang.org-Dokumenten stellt das tsc-Flag "alwaysStrict": true sicher, dass jede Datei mit "use strict"; am Anfang ausgegeben wird. Da ESM die "use strict"-Regeln implementiert, ohne dass die Anweisung "use strict"; zur Datei hinzugefügt werden muss, sollte es doch sicher sein, einfach darauf zu verzichten, "alwaysStrict": true in tsconfig.json-Dateien für ESM-Projekte hinzuzufügen?

Ursprünglich habe ich gefragt, weil es ein paar Repositories gab, denen ich auf GitLab & GitHub folgte, und ich bemerkte, dass keines "alwaysStrict" weggelassen hatte. Sie alle enthielten es immer noch. Dann wurde mir in den Kommentaren ein weiterer Aspekt klar, nachdem die ursprüngliche Version dieser Frage verfasst wurde (seitdem habe ich die Frage hinsichtlich Rechtschreib- und Grammatikfehlern sowie langer Sätze und falscher Nomenklatur bearbeitet, die ich korrigiert habe).

Also, kurz gesagt, möchte ich „alwaysStrict“ entfernen, wenn ich es tun kann, ohne das Risiko negativer Konsequenzen einzugehen. Ich meine, wenn es nutzlos ist, warum sollte man es dann haben? Ich würde also gerne wissen, entweder wie ich feststellen kann, dass ich es sicher entfernen kann, oder einfach, welche möglichen Auswirkungen es hat, es zu entfernen. Ist es nur Platzverschwendung, oder gibt es Umstände, unter denen ich „alwaysStrict“ in meiner tsconfig.json-Datei und/oder „use strict“ in meinen erzeugten JavaScript-Projektbuild-Dateien trotzdem behalten möchte.