我是 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 中导入我的外部依赖项
最佳答案
这里的主要部分是您想要导出您的对象实例。您的做法是正确的,但可能有一种更简单的方法。
在这种情况下,就像将其包装在一个类中并导出:
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/