2017-12-18 4 views
0

Stellen Sie sich vor ich diese einfache Typoskript Klasse, Animal.ts:Wie eine kompilierte Typoskript Klasse in Javascript verwenden

export default class Animal { 
    constructor(public name : string) { } 
} 

Mit dieser tsconfig.json Datei:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "strict": true 
    }, 
    "files": [ 
    "Animal" 
    ] 
} 

Wie kann ich die kompilierte Version dieses verwenden Klasse (kompiliert von running tsc) in einer Javascript-Datei wie folgt:

var Animal = require("./Animal"); 

var newAnimal = new Animal(); 

Sollte ich etwas in meiner tsconfig.json Datei bearbeiten? Der Fehler, den ich bekommen ist:

ReferenceError: Animal is not defined

+0

Sie können Javascript-Dateien auch mit dem Script 'allowJs' kompilieren (in tsconfig.json). Auf diese Weise können Sie von Ihrem Javascript aus auf Typoskript-Klassen verweisen. – Brian

+1

Da Sie den Standard-Export verwenden, glaube ich, dass Sie ihn wie 'var Animal = require (" ./ Animal ") benötigen. Default' <- beachten Sie die' .default' am Ende. – CRice

+1

Das Exportieren mit 'export default' macht Ihren Export zu einem Modul. Es würde 'new Animal.default ('name') 'werden. Da der Fehler nicht reproduzierbar ist, wird das Animal als '{__esModule: true, default: [Funktion: Animal]}' exportiert. –

Antwort

1

Wie Shane van den Bogaard darauf hingewiesen, das default Schlüsselwort in Animal.ts muss weggelassen werden, und:

const { Animal } = require('./Animal'); 

sollte statt

var Animal = require('./Animal'); 

Auf diese Weise verwendet werden, Wir können die Klasse Animal aufrufen und ein Objekt initialisieren, indem wir

verwenden
const { Animal } = require('./Animal'); 
var newAnimal = new Animal("Clifford"); 
Verwandte Themen