如何为内部 JavaScript 模块创建 .d.ts 文件
How to create a .d.ts file for an internal JavaScript module
我有一个 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[]
}
}
您的 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 找到它。如果这不起作用,请添加您遇到问题的确切错误。
我有一个 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[]
}
}
您的 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 找到它。如果这不起作用,请添加您遇到问题的确切错误。