Ist ein JavaScript-Code ein gültiger TypeScript-Code?

9

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!?

    
mehrandvd 24.12.2013, 10:48
quelle

2 Antworten

2

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.

Demonstration hier auf Typescriptlang.org Spielplatz

    
Pac0 07.07.2017, 09:58
quelle
6

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.

    
Dick van den Brink 24.12.2013 11:09
quelle

Tags und Links