почему объявление не может использоваться вместе с изолированными модулями в машинописном тексте?
Объявление используется для создания файла типа, а изолированные модули - все файлы должны быть отдельным модулем. Почему эти два варианта используются вместе?
error TS5053: Option 'declaration' cannot be specified with option 'isolatedModules'.
Ответ 1
Ответ
На вопрос, на который ссылался Макс Хейбер в комментариях, Уэсли Вигхам из команды TypeScript опубликовал следующий ответ (выделение добавлено):
Причина по той же причине, по которой вы не можете использовать константы в изолированных модулях: информация о типе. Поскольку изолированные модули компилируют каждый файл по отдельности без типов файлов, от которых он зависит, любой предполагаемый тип, который мы будем записывать в файл декларации, потенциально будет неправильным, поскольку при их расчете будет отсутствовать информация из остальной части компиляции. Существует ограниченное подмножество объявлений emit, где в вывод не выводятся типы, которые, однако, могут поддерживаться.
Другими словами, isolatedModules*.d.ts не предоставляют достаточно информации о типе для создания полных и точных *.d.ts объявлений *.d.ts.
Предлагаемый обходной путь
Комментарии к проблеме также имеют предложенный обходной путь, в котором у нас есть один tsconfig для компиляции с изолированными модулями и второй tsconfig для создания файлов объявлений.