【问题标题】:How to create a .d.ts file for an internal JavaScript module如何为内部 JavaScript 模块创建 .d.ts 文件
【发布时间】:2019-03-29 09:23:48
【问题描述】:

我有一个使用 json 文件进行配置的 JavaScript 项目。加载哪个配置文件由环境变量决定,所以我有一个包装文件config.js,它可以加载正确的 json 文件并将其导出为常量。

我正在使用 VS Code,并且想创建一个声明文件以便获得智能感知。我对 TypeScript 不够熟悉,不知道正确的文件结构,也不知道如何将我的 config.js 文件与导出的接口(或模块或命名空间?)相关联。

这是我所拥有的简化版本。据我所知,VS Code 不知道将config.d.tsconfig.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[]
    }
}

【问题讨论】:

    标签: javascript typescript javascript-intellisense


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 2017-04-14
      • 1970-01-01
      • 2019-03-30
      • 2017-03-02
      • 2014-12-28
      • 1970-01-01
      相关资源
      最近更新 更多