如何为内部JavaScript模块创建.d.ts文件

时间:2018-10-24 21:00:52

标签: javascript typescript javascript-intellisense

我有一个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[]
    }
}

1 个答案:

答案 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找到它。如果这不起作用,请添加您遇到的确切错误。