2017-10-25 1 views
1

ich ein Typoskript Projekt mit zwei wichtigen Dateien haben:Typoskript: Klassen und Schnittstellen in Definitionsdatei in kompilierten Js erforderlich bekommen

app.ts 
models.d.ts 

Die ersten paar Zeilen app.ts sieht wie folgt aus:

///<reference path="models.d.ts"/> 
'use strict'; 

import * as fs from 'async-file'; 
import { MyClass } from './models'; 

die ersten Zeilen des zusammengestellt app.js sind:

///<reference path="models.d.ts"/> 
'use strict'; 
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 
    return new (P || (P = Promise))(function (resolve, reject) { 
     function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 
     function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 
     function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } 
     step((generator = generator.apply(thisArg, _arguments || [])).next()); 
    }); 
}; 
Object.defineProperty(exports, "__esModule", { value: true }); 
const fs = require("async-file"); 
const models_1 = require("./models"); //// ERROR THROWN HERE!!!!!!!! 

Es wird jedoch keine models.js generiert, weil es nur eine .d.ts Deklarationsdatei ist. Also, wenn ich diese laufen, und require heißt ./models zu bekommen, erhalte ich die folgende Ausnahme:

nicht gefunden Modul‘./models'

Dies ist von Visual Studio Professional 2017 und ich habe keine tsconfig.json Datei. Allerdings sehen mein Projekt Kompilierungseinstellungen wie folgt aus:

CompilationSettings

Was mache ich falsch? Das bringt mich um.

+0

Ich bin mir nicht sicher, ob ich Ihre Frage verstehe. Welches Verhalten hast du erwartet? Wo sind die Implementierungen der Definition in 'module.d.ts'? –

+0

@ThomasDebries Es gibt keine Implementierungen. Eine Definitionsdatei ('.d.ts') benötigt sie nicht immer. Es sollte eine Reihe von Interfaces definieren, um TypeScript stark typisiert zu machen, aber zur Laufzeit haben alle diese Objekte keinen Typ (ihr Typ ist 'any'), daher sollte die' require' -Funktion nicht aufgerufen werden. – Diego

Antwort

1

models.d.ts bedeutet, dass es eine models.js gibt, die bereits an ihrem Platz in Ihrem Ausgabeverzeichnis existiert.

Sie sollten wahrscheinlich eine .ts Datei verwenden, wenn das nicht der Fall ist. Mit anderen Worten, benennen Sie es von models.d.ts zu models.ts um.

Verwandte Themen