我有一个JavaScript项目,该项目使用json文件进行配置。加载哪个配置文件取决于环境变量,因此我有一个包装文件config.js
,该文件会加载正确的json文件并将其导出为常量。
我正在使用VS Code,并且想创建一个声明文件,以便获得智能感知。我对TypeScript不太熟悉,无法知道正确的文件结构,也不知道如何将config.js文件与导出的接口(或模块或名称空间?)关联。
这是我所拥有的东西的精简版。据我所知,VS Code不知道将config.d.ts
与导出的config.js
关联起来。
/config/config.json
{
"setting1": {
"prop1": "foo",
"prop2": 123
},
"setting2": [ "a", "b", "c" ]
}
/src/config.js
import fs from 'fs';
import path from 'path';
const config = JSON.parse(fs.readFileSync(path.join('..', 'config', 'config.json')));
// do some stuff to `config`
export default config;
/src/config.d.ts
export namespace config {
export const setting1: {
prop1: string,
prop2: number
},
setting2: string[]
}
}
答案 0 :(得分:0)
您的config.d.ts
应该类似于config.js
的结构:
const config: {
setting1: {
prop1: string,
prop2: number
},
setting2: string[]
};
export default config;
请注意,config
常量的声明类型与您的配置文件的结构匹配,export default
的部分相同。将config.d.ts
文件与config.js
放在同一目录中应该足以让TypeScript找到它。如果这不起作用,请添加您遇到的确切错误。