Ответ 1
Ответ
На вопрос, на который ссылался Макс Хейбер в комментариях, Уэсли Вигхам из команды TypeScript опубликовал следующий ответ (выделение добавлено):
Причина по той же причине, по которой вы не можете использовать константы в изолированных модулях: информация о типе. Поскольку изолированные модули компилируют каждый файл по отдельности без типов файлов, от которых он зависит, любой предполагаемый тип, который мы будем записывать в файл декларации, потенциально будет неправильным, поскольку при их расчете будет отсутствовать информация из остальной части компиляции. Существует ограниченное подмножество объявлений emit, где в вывод не выводятся типы, которые, однако, могут поддерживаться.
Другими словами, isolatedModules
*.d.ts
не предоставляют достаточно информации о типе для создания полных и точных *.d.ts
объявлений *.d.ts
.
Предлагаемый обходной путь
Комментарии к проблеме также имеют предложенный обходной путь, в котором у нас есть один tsconfig
для компиляции с изолированными модулями и второй tsconfig для создания файлов объявлений.
tsconfig.json
{
"compilerOptions": {
"incremental": true,
"isolatedModules": true
}
}
TSconfig-для-declarations.json
{
"extends": "./tsconfig",
"compilerOptions": {
"emitDeclarationOnly": true,
"isolatedModules": false,
"declaration": true
}
}