Heim >Web-Frontend >js-Tutorial >ReScript ist noch nicht da

ReScript ist noch nicht da

Patricia Arquette
Patricia ArquetteOriginal
2024-10-02 14:18:30473Durchsuche

Als Fan von ML-inspirierten Sprachen fand ich ReScript immer faszinierend. Ist es an der Zeit, dass ReScript glänzt, nachdem async-await der Sprache kürzlich hinzugefügt wurde?

Es sieht auf jeden Fall verlockend aus:

... Sie können ReScript in die Hand nehmen und auf das umfangreiche JavaScript-Ökosystem und die Tools zugreifen, als ob Sie ReScript schon lange kennen würden1

Zwingt Sie nicht dazu, nach vorgefertigten Bindungsbibliotheken anderer zu suchen. ReScript benötigt nicht das Äquivalent von DefinitelyTyped von TypeScript.2

Was ist das Ziel dieses Projekts?
​Unser Ziel ist es, das beste getippte Spracherlebnis für die JavaScript-Plattform zu bieten.3

Wow, sie bieten das beste getippte Spracherlebnis für die JavaScript-Plattform, und das alles ohne die Notwendigkeit vorgefertigter Bindungen! Lass es uns versuchen!

Wir stoßen schnell an eine Wand, während wir versuchen, das Grundlegendste zu tun, was möglich ist:

ReScript is not there yet

Hmm... warum steht getElementById nicht im Dokument? Um welche Art von Dokument handelt es sich?

ReScript is not there yet

Dieses Bild ist alles, was die ReScript-Dokumentation darüber zu sagen hat. Keine Definition von Dom.document. F12 führt uns durch eine Kette leerer Typdefinitionen, sodass Dom.document wie ein einfacher Alias ​​für das JS-Dokument aussieht, mehr nicht.

Warten Sie, ich brauche also vorgefertigte Bindungen? Was ist mit „Zwingt Sie nicht dazu, nach vorgefertigten Bindungsbibliotheken anderer zu suchen“ passiert?

Geben Sie das rescript-webapi npm-Paket ein, Bindungen an das DOM und andere browserspezifische Web-APIs.. Ich folge den Anweisungen und Compiler-Fehlern, darunter einer, der mir mitteilt, dass möglicherweise ein Konfigurationsproblem in „bsconfig.json“ vorliegt, obwohl diese Datei jetzt „rescript.json“ heißt. Irgendwann kriege ich das hin.

So sieht es aus:

let elem = document->Document.getElementById("id")
// For the uninitiated, -> is the pipe operator.
// a->foo means foo(a)
// a->foo(b) means foo(a, b)
// The above code is therefore equivalent to
let elem = Document.getElementById(document, "id")

Sie werden dieses Dokument bemerken. wird keine Code-Vervollständigung anzeigen, da er grundsätzlich noch untypisiert ist. Ich muss wissen, welches Modul und welche Modulfunktion ich aufrufen soll.

Die IDE hilft mir also nicht dabei, das Richtige einzugeben, aber liefert sie mir gute Informationen über die Funktion, die ich aufrufe? Nicht wirklich:

ReScript is not there yet

Zur Referenz: Hier ist TypeScript sofort einsatzbereit:

ReScript is not there yet

Informativer Fehler, Link zu Beispielen, detaillierte Typdefinition. Danke schön. Das spart mir Zeit und Mühe und bringt mir beim Tippen das Richtige bei – das ist einer der Hauptgründe, warum ich statisches Tippen mag. Mit ReScript bekomme ich das einfach nicht hin.

Wenn die Interaktion mit dem DOM – der Grund, warum JavaScript erstellt wurde – nicht als wichtig genug erachtet wird, um integrierte Bindungen zu rechtfertigen, glaube ich, dass ich genug gesehen habe.

Ist ReScript im Jahr 2024 fertig? Nein. Die offizielle Dokumentation macht hohe Versprechungen, die völlig irreführend erscheinen. Ich denke, ReScript kann nützlich sein, wenn Sie viel ReScript-Code schreiben, der hauptsächlich mit anderem ReScript-Code interagiert. Aber man kann „das riesige JavaScript-Ökosystem“ nicht einfach ignorieren. Stellen Sie sich F# ohne Unterstützung für die BCL vor. Glücklicherweise wurden F# und seine Tools so konzipiert, dass sie C#-Typen und -Dokumentation nahtlos nutzen können. Sicherlich muss es eine Möglichkeit geben, DefinitelyTyped in ReScript zu nutzen. Bis ReScript dies tut, glaube ich nicht, dass es ernsthaft mit TypeScript konkurrieren kann.

Das obige ist der detaillierte Inhalt vonReScript ist noch nicht da. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn