簡體   English   中英

在Typescript中導入外部依賴項

[英]Importing external dependencies in Typescript

我是打字稿/節點的新手。 我有一個打字稿文件“ order.ts”,我想從中導入“ config.ts”的外部配置依賴項

我的配置文件代碼如下

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

module.exports = config;

我將配置文件導入訂單文件中,如下所示

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

但是,我得到TS編譯器拋出錯誤“ ...文件不是模塊”。 任何線索我應該如何在打字稿中導入我的外部依賴關系

在此處輸入圖片說明

這里的主要部分是您要導出對象實例。 您正朝着正確的方向前進,但可能會有更簡單的方法。

在這種情況下,例如將其包裝在類中並導出:

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

注意上課前的export 可以將同樣的方法應用於接口,枚舉等。通過這種方式導出,可以導入並初始化它:

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

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

就像在原始示例中那樣,這不會使它成為變量,而只是將其包裝在一個類中。 這也是為什么必須首先使用new Config()對其進行初始化的原因。

現在,我假設您只是希望全局訪問這些屬性。 甚至可能是靜態/只讀的,因此您不必每次都初始化類。 利用TypeScript的靜態類型,在這種情況下,示例可以更好地重構為以下形式:

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

這樣,調用它就不會那么麻煩了-而且非常安全:

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

現在,以這種方式導出只是其中一種選擇。 實際上,這完全取決於您在整個應用程序中所使用庫結構 (或者,取決於第三方庫)。 讀起來有些枯燥,但是我建議您看一下熟悉UMD和模塊等術語的不同結構,以及它們與導入的關系。

希望這可以幫助!

您可以通過2種方式進行導入和導出。

1)默認導出

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

// your other file

import configs from './config';

注意:在這里,您可以為導入的模塊指定任何名稱;

2)導入時以正確的聲明名稱進行正常導出。

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

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

注意:在這里,您必須提供所導出模塊的確切名稱。

導出配置時要遵循的最佳做法。

在代碼中創建帶有靜態變量的靜態類。 這可能意味着這些配置是固定的東西。

module.exports是導出模塊的節點語法。 Typescript具有關鍵字名稱export因此您可以使用以下命令:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM