Letra de imprenta - separar salida de código

votos
1

Estoy tratando mecanografiada y me parece muy útil.

Tengo un proyecto bastante grande y que estaba considerando volver a escribir utilizando texto mecanografiado. El problema principal aquí es la siguiente:

presentar A.ts:

class A extends B {
    // A stuff
}

presentar B.ts:

class B {
    // B stuff
}

Si Compilo A.ts con este comando:

tsc --out compiledA.js A.ts

Voy a conseguir de error del compilador porque él no sabe cómo amenaza la B después se extiende.

Por lo tanto, una solución sería incluida en A.ts (como la primera línea de código):

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

Compilación de nuevo A.ts con el mismo comando

tsc --out compiledA.js A.ts

Dará lugar a compiledA.js que contienen tanto B.ts y el código A.ts. (Que podría ser muy agradable)

En mi caso, sólo necesito para compilar el código en el archivo A.ts compiledA.js y yo no quiero que los B.ts cosas para estar ahí.

De hecho, lo que quiero es:

  • TSC --out A.js A.ts => compilar sólo las cosas A.ts
  • TSC --out B.js B.ts => compilar sólo las cosas B.ts

Puedo hacerlo mediante la eliminación de la extiende palabra clave, pero haciendo que yo lo desataré la mayor parte de la bondad mecanografiado.

¿Puede alguien telll si hay una manera de hacer esto?

Publicado el 03/10/2012 a las 12:54
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
2

Después de algunas investigaciones descubrí el problema se introdujo por el argumento --out en el compilador.

@silent__thought solución funciona bien si usted quiere tratar con módulos. Si no está usted tendrá que utilizar la instrucción require (ver la cuestión) y luego compilar el archivo "main.ts" withouth el argumento --out

Respondida el 03/10/2012 a las 20:27
fuente por usuario

votos
0

EDIT: Como señala Andrea, si se omite el --outparámetro que conseguirá el comportamiento esperado, es decir, ninguna combinación de archivos de origen. Voy a dejar esta solución alternativa a continuación en caso que puede ayudar a alguien más.


Creo que usted tendrá que utilizar la sintaxis módulo externo (CommonJS o AMD) para hacer esto.

Usando su ejemplo:

a.ts

import B = module("b")

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

b.ts

export class B {
    // B stuff
}

Compilar con tsc --out compiledA.js A.ts.

Esto da lugar a a.jsla importación de b.jsusar el sistema CommonJS. Los archivos resultantes se ven así:

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;
Respondida el 03/10/2012 a las 14:59
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more