Question

j'essaye la dactylographie et je trouve cela très utile.

J'ai un projet assez important et j'envisageais de le réécrire en utilisant du dactylographié.Le principal problème ici est le suivant :

fichier A.ts :

class A extends B {
    // A stuff
}

fichier B.ts :

class B {
    // B stuff
}

Si je compile A.ts avec cette commande :

tsc --out compiledA.js A.ts

J'obtiendrai une erreur du compilateur car il ne sait pas comment menacer le "B" après l'extension.

Ainsi, une "solution" serait d'inclure dans A.ts (comme première ligne de code) :

/// <reference path="./B.ts" />

Compiler à nouveau A.ts avec la même commande

tsc --out compiledA.js A.ts

Cela donnera lieu à compileA.js contenant à la fois le code B.ts et A.ts.(ce qui pourrait être très sympa)

Dans mon cas, j'ai seulement besoin de compiler le code A.ts dans le fichier compileA.js et je ne veux pas que les éléments B.ts soient là.

En effet, ce que je veux c'est :

  • tsc --out A.js A.ts => compile uniquement les éléments A.ts
  • tsc --out B.js B.ts => compile uniquement les éléments B.ts

Je peux le faire en supprimant le mot-clé "extends", mais en faisant cela, je perdrai la plupart des qualités dactylographiées.

Quelqu'un peut-il me dire s'il existe un moyen de procéder ?

Était-ce utile?

La solution

Après quelques recherches, j'ai découvert que le problème a été introduit par l'argument du compilateur.

@Silent__Houjours solution fonctionne bien si vous souhaitez gérer des modules.Si vous n'êtes pas obligé d'utiliser l'instruction requise (regardez la question), puis compilez le fichier «Main.TS» avec South The -out Argument

Autres conseils

MODIFIER: Comme Andrea le souligne, si vous omettez le --out paramètre, vous obtiendrez le comportement attendu, c'est-à-direaucune combinaison de fichiers sources.Je vais laisser cette solution alternative ci-dessous au cas où elle pourrait aider quelqu'un d'autre.


Je pense que vous devrez utiliser la syntaxe du module externe (CommonJS ou AMD) pour ce faire.

En utilisant votre exemple :

a.ts

import B = module("b")

class A extends B.B {
    // A stuff
}

b.ts

export class B {
    // B stuff
}

Compiler avec tsc --out compiledA.js A.ts.

Cela se traduit par a.js importer b.js en utilisant le système CommonJS.Les fichiers résultants ressemblent à ceci :

a.ts

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
}
var B = require("./b")
var A = (function (_super) {
    __extends(A, _super);
    function A() {
        _super.apply(this, arguments);

    }
    return A;
})(B.B);

b.ts

var B = (function () {
    function B() { }
    return B;
})();
exports.B = B;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top