Wie getrennte .ts Dateien auf tsc auszuführen?

stimmen
1

Ich habe zwei Typoskript Dateien A.tsund TestA.ts.

A.ts

class A {
    constructor( private name : string ){}
    disp(){ console.log( this.name ); }
}

TestA.ts

/// <reference path=A.ts/>
var a1 = new A( Jun );
a1.disp();
  • tsc TestA.ts
    OK. Es macht A.js und TestA.js.

  • tsc TestA.ts -e
    NG. „RefenceError: Anicht definiert ist “

  • tsc A.ts TestA.ts -e
    Auch stellt sich die gleichen Fehler

Wo finde ich falsch?

Veröffentlicht am 04/10/2012 um 14:07
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
4

/// <reference path="A.ts"/>wird nur bei der Kompilierung auf Referenztypen in einer anderen Datei verwendet. Wenn Sie dieses Konstrukt verwenden, nimmt Typoskript, dass diese Typen zur Laufzeit irgendwie schon zur Verfügung stehen werden. Das heißt, Sie sind verantwortlich für die sie selbst zu laden.

Was Sie wollen , sind die anderen Dateien an zu tun ist , Referenz - Laufzeit . Dies erfolgt Modulen und die importund exportKeywords.

Versuche dies:

A.ts

export class A {   
  constructor(private name : string ) {}
  disp() {
    console.log(this.name);
  }
}

TestA.ts

import a = module('./a');
var a1 = new a.A( "Jun" );
a1.disp();

Dann können Sie verwenden , tsc TestA.ts -ezu kompilieren und den Code auszuführen.

Beantwortet am 04/10/2012 um 15:52
quelle vom benutzer

stimmen
1

Sie haben einen Seitenfehler in Ihrem Code (fehlt ein „)“). Dieser erstellt:

class A {   
  constructor(private name : string ) {}
  disp() {
    console.log(this.name);
  }
}

EDIT:

In Bezug auf Ihre erste prob, müssen Sie das erste Modul dann in Ihrer zweiten Datei importieren exportieren.

Sie müssen ein externes Modul Loader verwenden (wie RequireJS), um es als Compiler ausführen zu können, wird ein Funktionsaufruf erfordern implementieren (wie Commonjs Modul).

siehe: Wie funktioniert Laden von Modulen Businesses Typoskript

A.ts

export class A {
  constructor(private name : string ){}
  disp() {
    console.log(this.name);
  }
}

TestA.js

var A = require("./A")
var a1 = new A.A("Jun");
a1.disp();
Beantwortet am 04/10/2012 um 15:06
quelle vom benutzer

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