Как создать файл .d.ts для внутреннего модуля JavaScript - PullRequest
0 голосов
/ 25 октября 2018

У меня есть проект JavaScript, который использует файл json для конфигурации.Какой конфигурационный файл загружен, определяется переменными среды, поэтому у меня есть файл-обертка config.js, который загружает правильный файл json и экспортирует его как константу.

Я использую VS Code и хотел бысоздать файл декларации, чтобы я мог получить intellisense.Я недостаточно знаком с 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 голосов
/ 25 октября 2018

Ваш 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 нашел его.Если это не работает, пожалуйста, добавьте точную ошибку, которую вы получите к вопросу.

...