javascript - 在 Typescript 中导入外部依赖项

标签 javascript node.js typescript dependencies export

我是 typescript /Node 的新手。我有一个 typescript 文件“order.ts”,我想从中导入“config.ts”的外部配置依赖项

我的配置文件代码如下

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

module.exports = config;

我正在导入订单文件中的配置文件,如下所示

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

但是,我收到 TS 编译器抛出错误“...文件不是模块”。任何线索我应该如何在 typescript 中导入我的外部依赖项

enter image description here

最佳答案

这里的主要部分是您想要导出您的对象实例。您的做法是正确的,但可能有一种更简单的方法。

在这种情况下,就像将其包装在一个类中并导出:

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

注意课前的导出。同样的方法也适用于接口(interface)、枚举等。通过这种方式导出,您可以导入它并初始化它:

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);

现在以这种方式导出只是其中一种选择。它实际上完全取决于 library structure you're using整个应用程序(或来自第三方库,就此而言)。这是一个有点枯燥的阅读,但我建议您查看不同的结构,以熟悉 UMD 和模块等术语以及它们与导入的关系。

希望这有帮助!

关于javascript - 在 Typescript 中导入外部依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45835962/

相关文章:

javascript - 更改对象会导致所有对象发生更改

javascript - 这是什么奇怪的: JSON Parse error: Unexpected identifier "Tunnel"

使用 Imagemagick : nondeterministic corruption 的 Node.js 缩略图

node.js - Passport.js - 将 {user : req. user} 隐式传递给模板?

具有可区分联合的 typescript 条件类型

javascript - 使用 javascript 创建 Instagram 风格的过滤器?

javascript - 限制 Rails 循环中的 collection_check_boxes 选择

node.js - Mongoose/MongoDB 中嵌套模式的正确模式是什么?

node.js - Jest 测试失败,错误为 "DataSource is not set for this entity"

angular - 如何将 Angular 表单验证与 ngFor 绑定(bind)