2017-08-23 3 views
0

Je suis un débutant dans le typecript/node. Je dispose d'un fichier dactylographiée « order.ts » dont je voudrais importer une dépendance de configuration externe de « config.ts »Importation de dépendances externes dans Typescript

Mon code de fichier de configuration est comme ci-dessous

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

module.exports = config; 

J'importe la configuration fichier dans le fichier de commande comme ci-dessous

import { config } from "../../config"; 

Cependant, je reçois l'erreur de lancer le compilateur TS « ... pas un fichier module ». Tous les indices que je devrais-je importer mes dépendance externe dactylographiée

enter image description here

+1

essayer --- export const config = { mongoAddress: "MongoDB: // localhost: 27017/dts", DataDirectory: "../../data/" }; –

+0

Cela a fonctionné :) ... Merci Ajay – Asif

Répondre

0

Il existe deux façons d'importer et d'exporter.

1) l'exportation par défaut

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

// your other file 

import configs from './config'; 

Note: Vous pouvez donner un nom pour le module importé;

2) exportation normale avec le nom exact de la déclaration lors de l'importation.

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

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

Remarque: Vous devez indiquer ici le nom exact du module que vous avez exporté. Meilleures pratiques à suivre lors de l'exportation des configurations.

créer une classe statique avec des variables statiques dans le code. Ce qui signifie probablement que ces configs sont des trucs fixes.

0

module.exports est la syntaxe de nœud pour les modules d'exportation. Tapuscrit a un nom mot-clé export de sorte que vous pouvez simplement utiliser ceci:

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

La partie principale ici est que vous voulez exporter votre objet exemple. Vous êtes sur la bonne voie avec cela, mais il peut y avoir un moyen plus facile pour vous.

Dans ce cas quelque chose comme l'enveloppant dans une classe et l'exportation que:

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

Notez la export avant la classe. La même chose peut être appliqué aux interfaces, énumérations, etc. En exporter cette façon, vous pouvez l'importer et l'initialiser:

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

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

Cela ne le fera pas une variable, comme dans votre exemple original, mais vous il suffit de l'emballer dans une classe. C'est aussi pourquoi vous devez l'initialiser en utilisant new Config(). Maintenant, je suppose que vous voulez simplement accéder à ces propriétés globalement. Et peut-être même statique/en lecture seule, vous n'avez donc pas besoin d'initialiser la classe à chaque fois. Faisant usage de la typage statique dactylographiées, l'échantillon serait dans ce cas mieux refactorisé à quelque chose comme ceci:

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

Avec cela, l'appelant est encore moins importune - et le type très sûr:

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

L'exportation de cette manière n'est qu'une des options. En fait, cela dépend entièrement du library structure you're using de votre application (ou des bibliothèques tierces, d'ailleurs). C'est un peu la lecture sèche, mais je vous recommande de jeter un oeil sur les différentes structures pour se familiariser avec des termes tels que UMD et les modules et comment ils se rapportent à une importation.

Espérons que cela aide!