在 Typescript 中导入外部依赖
Importing external dependencies in Typescript
我是 typescript/node 的新手。我有一个打字稿文件 "order.ts",我想从中导入外部配置依赖项 "config.ts"
我的配置文件代码如下
let config = {
mongoAddress: "mongodb://localhost:27017/dts",
dataDirectory: "../../data/"
};
module.exports = config;
我正在导入订单文件中的配置文件如下
import { config } from "../../config";
但是我收到 TS 编译器抛出错误“...文件不是模块”。我应该如何在打字稿中导入我的外部依赖项的任何线索
module.exports
是导出模块的节点语法。打字稿有一个关键字名称 export
所以你可以只使用这个:
export const config = {
mongoAddress: "mongodb://localhost:27017/dts",
dataDirectory: "../../data/"
};
这里的主要部分是您想导出您的对象实例。你在正确的轨道上,但可能有更简单的方法。
在这种情况下,将其包装在 class 中并导出:
export class Config {
mongoAddress = 'mongodb://localhost:27017/dts';
dataDirectory = '../../data/';
}
注意 class 之前的 export
。这同样适用于接口、枚举等。通过以这种方式导出,您可以导入并初始化它:
import { Config } from '../config';
var c = new Config();
console.log(c.mongoAddress);
这不会使它成为一个变量,就像在您的原始示例中一样,但您只需将它包装在 class 中。这也是为什么您必须首先使用 new Config()
初始化它的原因。
现在,我假设您只想在全局范围内访问这些属性。甚至可能 static/readonly,因此您不必每次都初始化 class。利用 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 和模块等术语以及它们与导入的关系。
希望对您有所帮助!
您可以通过 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';
注意:此处必须给出导出模块的确切名称。
导出配置时应遵循的最佳做法。
在代码中创建一个带有静态变量的静态 class。这可能意味着这些配置是固定的东西。
我是 typescript/node 的新手。我有一个打字稿文件 "order.ts",我想从中导入外部配置依赖项 "config.ts"
我的配置文件代码如下
let config = {
mongoAddress: "mongodb://localhost:27017/dts",
dataDirectory: "../../data/"
};
module.exports = config;
我正在导入订单文件中的配置文件如下
import { config } from "../../config";
但是我收到 TS 编译器抛出错误“...文件不是模块”。我应该如何在打字稿中导入我的外部依赖项的任何线索
module.exports
是导出模块的节点语法。打字稿有一个关键字名称 export
所以你可以只使用这个:
export const config = {
mongoAddress: "mongodb://localhost:27017/dts",
dataDirectory: "../../data/"
};
这里的主要部分是您想导出您的对象实例。你在正确的轨道上,但可能有更简单的方法。
在这种情况下,将其包装在 class 中并导出:
export class Config {
mongoAddress = 'mongodb://localhost:27017/dts';
dataDirectory = '../../data/';
}
注意 class 之前的 export
。这同样适用于接口、枚举等。通过以这种方式导出,您可以导入并初始化它:
import { Config } from '../config';
var c = new Config();
console.log(c.mongoAddress);
这不会使它成为一个变量,就像在您的原始示例中一样,但您只需将它包装在 class 中。这也是为什么您必须首先使用 new Config()
初始化它的原因。
现在,我假设您只想在全局范围内访问这些属性。甚至可能 static/readonly,因此您不必每次都初始化 class。利用 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 和模块等术语以及它们与导入的关系。
希望对您有所帮助!
您可以通过 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';
注意:此处必须给出导出模块的确切名称。
导出配置时应遵循的最佳做法。
在代码中创建一个带有静态变量的静态 class。这可能意味着这些配置是固定的东西。