web-dev-qa-db-fra.com

Transformer TypeScript en JavaScript

Je me demande comment est-il possible de transformer TypeScript en JavaScript de manière multiplateforme. Je suis conscient de la disponibilité du gestionnaire de packages node pour TypeScript , mais existe-t-il d'autres alternatives utilisables côté serveur? 

22
Alex Objelean

Peut-être que ce n'est pas la réponse que vous voulez, mais comme tout le monde l'a mentionné, le compilateur est un fichier JS, vos options sont donc les options d'exécution d'un fichier JS.

Dans Windows, il existe 2 solutions évidentes, Node et Windows Script Host.

Vous connaissez déjà le noeud, l’autre option est un composant fourni avec toutes les versions de Windows (je pense), vous pouvez le faire comme ceci:

cscript path/to/tsc.js source-file.ts

Vous pouvez voir toutes les options du compilateur simplement:

cscript path/to/tsc.js

Sur Linux, je suppose que vous devriez pouvoir utiliser (en plus du noeud):

  • Shell autonome V8, remplacez node ou cscript par v8-Shell
  • ExecJS https://github.com/sstephenson/execjs
  • Tout autre coureur JS disponible sur la plate-forme sélectionnée (une autre réponse mentionnée par Rhino, par exemple) </ strike>

Update: Une autre réponse suggère que l'API du compilateur est uniquement compatible avec le noeud et Windows Script Host (outil cscript). Ainsi, s'il est correct, sous Linux, vous aurez besoin de Node pour compiler TypeScript.

Si vous cherchez quelque chose comme apt get tsc (ou quoi que soient les gestionnaires de paquets Linux/Mac), je pense que ce n’est pas le cas.

Je me souviens d'avoir lu quelque part que l'E/S était optimisée pour Node et Windows Script Host. Par conséquent, si vous rencontrez des problèmes d'options, vous obtiendrez probablement Node si vous recherchez l'indépendance de la plate-forme.

Mise à jour: Une autre réponse ici confirme la même chose à propos de la compatibilité.

15
Meligy

Le compilateur TypeScript est intégré à TypeScript et est donc disponible sous la forme d'un fichier JS ( tsc.js ) pouvant être exécuté à l'aide de n'importe quelle implémentation VM ou JS compilante ES3. 

Cela dit, l'infrastructure d'E/S de fichier actuelle du compilateur ne prend en charge que les API de fichier de nœud et d'hôte de script Windows. Si vous souhaitez recommander un support pour un autre environnement, n'hésitez pas à contacter l'équipe sur notre site GitHub (Anciennement CodePlex )

28
Joe Pamer

Concrètement, sur le serveur (en supposant que votre serveur dispose de Node.js), vous exécuteriez simplement:

node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]

Vous pouvez exécuter cette commande sans nom de fichier d'entrée pour afficher l'aide en ligne de commande de tsc.js.

5
Ryan Cavanaugh

J'ai un projet qui compile TypeScript sur Javascript en Java:

https://github.com/martypitt/TypeScript4j

Comme indiqué dans d'autres réponses, cela utilise Rhino, il n'y a donc aucune dépendance à npm ou node.

Voici un exemple:

// Instantiate the compiler:
TypescriptCompiler compiler = new TypescriptCompiler();

// Compile a string:
String output = compiler.compile("class Greeter { greeting: string; }");

// Or, compile and output to a file:
compiler.compile(new File("example.ts"), new File('output.js'));

Je l'utilise dans un autre projet - 'Bakehouse' pour effectuer une compilation à la volée de ressources TypeScript dans des environnements Spring

3
Marty Pitt

Si vous devez cibler Java, vous pouvez exécuter tsc.js avec le moteur Rhino dans le cadre de votre processus de construction.

3
Christopher Cook

Pour compiler ts -> js: node est disponible pour toutes les plateformes courantes, je ne vois donc pas pourquoi vous voudriez avoir un tsc.Java alors que vous en avez déjà un. L'installation du noeud n'est pas grave. En fait, c'est plus facile que Java.

Une fois que vous avez votre fichier proj.js, vous pouvez le copier sur la plate-forme de déploiement de votre choix.

De mon point de vue, JavaScript - ou plus précisément ECMAScript est une alternative à Java. Je suis donc heureux de ne pas avoir à jongler avec JVM, etc. pour utiliser l'outil. Mais si vous préférez Java, pourquoi ne pas utiliser JS?

2
CyberFonic

Astuce SublimeText2 Vous pouvez transpiler TypeScript en javascript directement à partir de SublimeText2 (vous avez besoin du noeud):

Créez un fichier TypeScript.sublime-build dans /Sublime Text 2/Packages/User avec ce contenu:

{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}

alors, maintenant, vous pouvez transpiler votre code avec ctrl + b ou cmd + b

1
k33g_org

Je joue avec cela, et je peux compiler TypeScript avec javascript avec le code suivant:

<script src=TypeScript.js></script>

<script>

var scriptText = ""
        + "/// <reference path=\"test.ts\"/>" + "\r\n"
        + "class Car {"
        + "     constructor (private name: string) { } "
        + "     getName() { "
        + "         var juice = new Juice();"
        + "         return name; "
        + "     } "
        + "} "
        + "var car = new Car('Subaru Impreza');"
        + "console.log(car.getName());";





var TextWriter = function () { };

TextWriter.prototype = {
collected: '',

Write: function (sc) {
    this.collected += sc;
},
WriteLine: function(sc) {
    this.collected += sc + '\n';
},
toString: function() {
    return this.collected;
}
};

var output = new TextWriter();
var tsc = new TypeScript.TypeScriptCompiler(output);

var script = tsc.addUnit(scriptText, "");

tsc.emit();

console.log(output.toString());

</script>

Ce n'est pas exactement idéal cependant. J'essaie de faire fonctionner quelque chose pour pouvoir convertir TypeScript en JS en C # (avec Javascript .NET), mais je reçois un débordement de pile lors de l'appel ts.addUnit.

1
eoleary

C'est ce qui a fonctionné pour moi:

Tout d’abord, installez le module TypeScriptnode >> npm install -g TypeScript. Cela donne un utilitaire de ligne de commande tsc.

Ensuite, tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts 

  • ceci va transpile les fichiers gulpfile.ts et gulp-config.ts à gulpfile.js et gulp-config.js. Nous fournissons le fichier typings/tsd.d.ts comme référence pour une transpilation correcte. 
  • Le module TypeScriptnode couvre de nombreuses options >> tsc -h pour spécifier le répertoire ou le fichier output, etc..

J'espère que cela t'aides.

0
Akash