Hoe wordt gescheiden Ts bestanden uit te voeren op TSC?

stemmen
1

Ik maakte twee typescript bestanden A.tsen 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. Het maakt A.js en TestA.js.

  • tsc TestA.ts -e
    NG. RefenceError: Ais niet gedefinieerd

  • tsc A.ts TestA.ts -e
    roept ook dezelfde fout

Waar moet ik mis gaan?

De vraag is gesteld op 04/10/2012 om 14:07
bron van user
In andere talen...                            


2 antwoorden

stemmen
4

/// <reference path="A.ts"/>wordt alleen gebruikt tijdens het compileren naar referentietypes in een ander bestand. Wanneer u deze constructie gebruiken, typoscript gaat ervan uit dat die soorten zullen een of andere manier al beschikbaar op de runtime zijn. Dat wil zeggen, ben je verantwoordelijk voor het laden ze zelf zijn.

Wat je willen doen is verwijzen naar de andere bestanden op runtime . Dit wordt gedaan met behulp van modules en importen exportzoekwoorden.

Probeer dit:

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();

Dan kunt u gebruiken tsc TestA.ts -eom te compileren en uitvoeren van de code.

antwoordde op 04/10/2012 om 15:52
bron van user

stemmen
1

Je hebt een kant fout in uw code (ontbrekende a ")"). Deze stelt:

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

BEWERK :

Met betrekking tot uw eerste prob, moet u de eerste module exporteren dan importeren in uw tweede bestand.

U moet een externe module loader (zoals RequireJS) te gebruiken om te kunnen om het uit te voeren als de compiler zal een vereisen functie call (zoals CommonJS module) te implementeren.

Zie: Hoe werkt Module laden Werken met typoscript

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();
antwoordde op 04/10/2012 om 15:06
bron van user

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