Momentan habe ich angefangen, TypeScript
zu lernen. Aus den Dokumenten, die ich für TypeScript
untersucht habe, habe ich einige Beispiele gesehen, in denen pure JavaScript
code als TypeScript
code kompiliert werden konnte.
Meine Frage ist: Wurde die TypeScript-Sprache so entworfen, dass jeder JavaScript-Code ein gültiger TypeScript-Code ist?
Also ist% .js
eine gültige .ts
Datei!?
Nehmen wir an, gültiger Code bedeutet: ist syntaktisch korrekt in Bezug auf die Sprachspezifikationen.
Dann lautet die Antwort YES .
Es ist in den Spezifikationen für Typskripte (zweiter Absatz):
TypeScript ist ein syntaktischer Zucker für JavaScript. TypeScript-Syntax ist eine Obermenge der ECMAScript 2015 (ES2015) -Syntax. Jedes JavaScript-Programm ist auch ein TypeScript-Programm.
(Betonung meiner)
Nun, meistens möchten Sie nicht, dass grundlegendes JavaScript "unkontrolliert" verwendet wird. Aus diesem Grund empfehle ich dringend, die Optionen beizubehalten, die ein JavaScript-Programm nicht mit dem Typescript-Compiler kompilieren Die Option noImplicitAny
wurde als true
festgelegt.
Schließlich war das einer der Gründe, die TypeScript-Sprache überhaupt erst zu erstellen!
Trotzdem ist ein gültiges JavaScript-Programm technisch gültiges TypeScript. Dies ist in den Spezifikationen wahrscheinlich durch die Notwendigkeit der "Rückwärtskompatibilität" oder, besser formuliert, durch die Notwendigkeit einer Ersetzung (Ich möchte nicht auf ECMAScript-Details eingehen, aber es ist erwähnenswert)
Um das Beispiel einer anderen Antwort zu nehmen, der Typescript-Code
%Vor%wird in genau denselben JavaScript-Code (mit korrekten Compiler-Optionen) übersetzt.
Kein gültiger JavaScript-Code ist gültig TypeScript siehe mein Beispiel unten.
%Vor%TypeScript gibt den folgenden Fehler: Die Zeichenfolge kann nicht in Nummer konvertiert werden. Um das in TypeScript zu erledigen, fügen Sie ": any" wie unten hinzu.
%Vor%Das passiert, weil TypeScript bemerkt hat, dass testVar deklariert ist und in der Deklaration eine Nummer zugewiesen ist und daher entscheidet, dass es eine Nummer bleiben soll.
Tags und Links javascript typescript