Maskinskrevet manuskript - separere kodeutmatningen

stemmer
1

Jeg prøver script, og jeg finner det svært nyttig.

Jeg har en ganske stort prosjekt, og jeg vurderte å skrive det ved hjelp av typescript. Hovedproblemet her er følgende:

fil A.ts:

class A extends B {
    // A stuff
}

fil B.ts:

class B {
    // B stuff
}

Hvis jeg kompilere A.ts med denne kommandoen:

tsc --out compiledA.js A.ts

Jeg får feilmelding fra kompilatoren fordi han ikke vet hvordan de skal trussel B etter forlenger.

Så, en løsning ville være inkludert i A.ts (som første linje med kode):

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

Kompilering igjen A.ts med samme kommando

tsc --out compiledA.js A.ts

Vil resultere i compiledA.js inneholder både B.ts og A.ts kode. (Som kan være veldig hyggelig)

I mitt tilfelle, jeg trenger bare å kompilere A.ts koden i compiledA.js filen, og jeg vil ikke at de B.ts ting å være der.

Ja, det jeg ønsker er:

  • TSC --out A.js A.ts => kompilere bare A.ts ting
  • TSC --out B.js B.ts => kompilere bare B.ts ting

Jeg kan gjøre det ved å fjerne strekker søkeord, men gjør at jeg vil miste det meste av Loggfila godhet.

Kan noen telll meg om det er en måte å gjøre dette?

Publisert på 03/10/2012 klokken 11:54
kilden bruker
På andre språk...                            


2 svar

stemmer
2

Etter litt undersøkelser fant jeg ut at problemet ble introdusert av --out argument i kompilatoren.

@silent__thought løsningen fungerer helt fint hvis du ønsker å håndtere moduler. Hvis du ikke må du bruke kreve uttalelse (se på spørsmålet) og deretter kompilere "main.ts" -filen annulere den --out argumentet

Svarte 03/10/2012 kl. 19:27
kilden bruker

stemmer
0

EDIT: Som Andrea påpeker, hvis du utelater --outparameteren du vil få atferden forventet, dvs. ingen kombinasjon av kildefilene. Jeg vil forlate denne alternative løsningen under incase det kan hjelpe noen andre.


Jeg tror du er nødt til å bruke ekstern modul syntaks (CommonJS eller AMD) for å gjøre dette.

Bruke eksempel:

a.ts

import B = module("b")

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

b.ts

export class B {
    // B stuff
}

Kompilere med tsc --out compiledA.js A.ts.

Dette resulterer i a.jså importere b.jsbruker CommonJS system. De resulterende filene se slik ut:

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;
Svarte 03/10/2012 kl. 13:59
kilden bruker

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