我是打字稿/节点的新手。我有一个打字稿文件" order.ts"我希望从" config.ts"
导入外部配置依赖项我的配置文件代码如下
let config = {
mongoAddress: "mongodb://localhost:27017/dts",
dataDirectory: "../../data/"
};
module.exports = config;
我正在订单文件中导入配置文件,如下所示
import { config } from "../../config";
但是我让TS编译器抛出错误" ...文件不是模块"。我应该如何在typescript中导入我的外部依赖
答案 0 :(得分:2)
此处的主要部分是您要导出对象实例。你已经走上了正确的道路,但对你来说可能更容易。
在这种情况下,比如将它包装在类中并导出:
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);
现在以这种方式导出只是其中一个选项。它实际上完全取决于整个应用程序中的library structure you're using(或者来自第三方的库)。这有点干读,但我建议您查看不同的结构,以熟悉UMD和模块等术语以及它们与导入的关系。
希望这有帮助!
答案 1 :(得分:1)
您可以通过两种方式进行导入和导出。
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';
注意:您必须在此处提供导出模块的确切名称。
导出配置时要遵循的最佳做法。
在代码中创建一个带静态变量的静态类。这可能意味着这些配置是固定的东西。
答案 2 :(得分:0)
module.exports
是导出模块的节点语法。 Typescript有一个关键字名称export
,所以你可以使用它:
export const config = {
mongoAddress: "mongodb://localhost:27017/dts",
dataDirectory: "../../data/"
};