Как написать объявление типа для модулей со структурой пространства имен - PullRequest
1 голос
/ 21 июня 2019

Поэтому я пытаюсь реорганизовать объявление типа модуля с именем inquirer, который строго структурирован в пространстве имен.

Мне действительно не нравится иметь один файл с 1k строк кода внутрииз-за этого, поэтому я попытался разделить объявление типа целиком на несколько файлов, и у меня возникли большие проблемы с этим.

General

Как я уже говорил, я пишу объявления типа длямодуль с именем inquirer, который не работает с es6-модулями.

Например, сам экспортируемый член является объектом типа PromptModule и пространством имен с некоторыми классами и интерфейсами одновременно:

import inquirer = require("inquirer");
let question: inquirer.Question = { /* This is a question */ };
inquirer.prompt(question);
inquirer.restoreDefaultPrompts();
inquirer.registerPrompt({ /* this is a prompt */ });
let x = new inquirer.ui.Prompt();

К сожалению, я действительно не смог найти способ разделить модуль-запросчик на отдельные файлы для каждого интерфейса и / или класса.

Единственный способ, который я нашел, - это выполнить пространство имен.слияние, которое хорошо описано в комментарии @Ryan Cavanaugh прямо под заголовком "Version 2" .

К сожалению, я не смог экспортировать объединенное пространство имен в моем index.d.ts -файле.

Это подводит меня к моему вопросу:

  • Есть ли способ достичь этой цели?
  • Как я могу превратить модуль-запросчик в приятный для обслуживанияобъявление типа?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...