Динамически загружайте интерфейсы из файла определения текста d.ts

#javascript #typescript #dynamic #import

Вопрос:

У меня есть .d.ts файл, содержащий интерфейсы. Я заранее не знаю, какие интерфейсы существуют. .d.ts Файлы создаются библиотекой третьей части, а не из соответствующих .ts файлов.

 export interface ExampleInterface1 {
  id: string;
  type: string;
}

export interface ExampleInterface2 {
  id: string;
  type: string;
}
 

Таким образом, я хочу динамически загружать файл `.d.ts

 const data = await import('path/to/my/dynamically/created/file'); // without .d.ts extension
 

Однако это не работает с .d.ts файлами. Я тестировал с другими файлами, включая JSON, и содержимое отлично загружается в data переменную.

Я могу импортировать вручную, но, конечно, это не помогает моей ситуации.

 import { ExampleInterface1, ExampleInterface2 } from 'path/to/my/dynamically/created/file';
 

Как я могу динамически загружать имена и содержимое интерфейса из .d.ts файла?

Комментарии:

1. Я все еще не понимаю, чего вы пытаетесь достичь. Интерфейсы не существуют во время выполнения, поэтому импортировать их вручную не получится.

2. Я программно анализировал их, чтобы создать файлы с одним индексом «бочонок» как часть библиотеки пакетов. В конце концов, вместо того, чтобы создавать синтаксический анализатор для поиска и игнорирования дубликатов импорта, я обнаружил, что базовая библиотека, которую я использовал, делала в основном то же самое. Наконец я просто прочитал содержимое разных d.ts файлов и тупо объединил их, что было достаточно хорошо для моего варианта использования.