2017-08-23 2 views
0

Ich bin ein Neuling in Typoskript/Knoten. Ich habe eine Typoskript Datei „order.ts“, aus dem Ich mag würde eine externe Konfigurations Abhängigkeit von „config.ts“Importieren von externen Abhängigkeiten in Typescript

Code

Mein config-Datei ist als unten

let config = { 
    mongoAddress: "mongodb://localhost:27017/dts", 
    dataDirectory: "../../data/" 
}; 

module.exports = config; 

ich die Config am Import importieren Datei in der Bestelldatei wie folgt:

Allerdings bekomme ich den TS-Compiler werfen Fehler "... Datei kein Modul". Irgendwelche Hinweise, wie ich sollte ich meine externe Abhängigkeit in Typoskript

enter image description here

+1

versuchen dieses --- Export const config = { mongoAddress: "mongodb: // localhost: 27017/dts", Data-Verzeichnis: "../../data/" }; –

+0

Das hat funktioniert :) ... Danke Ajay – Asif

Antwort

0

Es gibt 2 Möglichkeiten, wie Sie importieren und exportieren können.

1) Standardexport

// config.ts 
export const config = { 
    mongoAddress: "mongodb://localhost:27017/dts", 
    dataDirectory: "../../data/" 
}; 
export default config; 

// your other file 

import configs from './config'; 

Hinweis: Hier können Sie einen beliebigen Namen für das importierte Modul geben;

2) normaler Export mit genauem Deklarationsnamen beim Importieren.

// config.ts 
export const config = { 
    mongoAddress: "mongodb://localhost:27017/dts", 
    dataDirectory: "../../data/" 
}; 

// your other file 
import { config } from './config'; 

Hinweis: Hier müssen Sie den genauen Namen des exportierten Moduls angeben.

Best Practices beim Exportieren von Konfigurationen.

Erstellen Sie eine statische Klasse mit statischen Variablen im Code. Was wahrscheinlich bedeutet, dass diese Configs fixed stuffs sind.

0

module.exports ist der Knoten Syntax für den Export-Module werden zu importieren. Typoskript hat eine Keyword-Namen export so können Sie nur verwenden:

export const config = { 
    mongoAddress: "mongodb://localhost:27017/dts", 
    dataDirectory: "../../data/" 
}; 
2

Der Hauptteil ist für Sie Export Ihr Objekt Instanz wollen. Sie sind damit auf dem richtigen Weg, aber es könnte einen einfacheren Weg für Sie geben.

In diesem Fall so etwas wie es in einer Klasse Verpackung und Export, dass:

export class Config { 
    mongoAddress = 'mongodb://localhost:27017/dts'; 
    dataDirectory = '../../data/'; 
} 

Beachten Sie die export vor der Klasse. Das gleiche kann auf Schnittstellen, Aufzählungen angewendet werden usw. Durch es auf diese Weise exportieren Sie dann importieren und initialisieren:

import { Config } from '../config'; 

var c = new Config(); 
console.log(c.mongoAddress); 

Dies wird es keine Variable machen, wie in Ihrem ursprünglichen Beispiel, aber Sie werden Wickeln Sie es einfach in eine Klasse. Deshalb müssen Sie es zuerst mit new Config() initialisieren.

Nun gehe ich davon aus, dass diese Eigenschaften einfach global abgerufen werden sollen. Und vielleicht sogar statisch/schreibgeschützt, so dass Sie die Klasse nicht jedes Mal initialisieren müssen. Die Nutzung der statischen Typisierung von Typoskript, würde die Probe in diesem Fall besser refactored etwas wie folgt aus:

export class Config { 
    public static readonly mongoAddress: string = 'mongodb://localhost:27017/dts'; 
    public static readonly dataDirectory: string = '../../data/'; 
} 

Damit nannte es ist noch weniger aufdringlich - und sehr typsicher:

console.log(Config.mongoAddress); 
console.log(Config.dataDirectory); 

Jetzt exportieren ist nur eine der Optionen. Es hängt tatsächlich vollständig von der library structure you're using in Ihrer gesamten Anwendung (oder von Third Partie-Bibliotheken, für diese Angelegenheit). Es ist ein bisschen trockenes Lesen, aber ich empfehle Ihnen, sich die verschiedenen Strukturen anzusehen, um sich mit Begriffen wie UMD und Modulen vertraut zu machen und wie sie sich auf einen Import beziehen.

Hoffe, das hilft!

Verwandte Themen