Я пытаюсь прекратить использование TSD для получения определений типов в проекте, который использует множество libaries через глобальные переменные (опция outFile
используется в tsconfig.json
, если это имеет значение). В частности, он использует библиотеку Moment таким образом. Moment предоставляет its own type definitions как часть пакета NPM. Однако эти определения не объявляют ничего в глобальной области. Обратите внимание: moment
является глобальной переменной типа moment.MomentStatic
и пространства имен типов. Используя пакет NPM, как я могу увеличить глобальную область действия таким образом, что все начинает работать, так как теперь оно работает со старыми определениями типов, полученными из TSD? А именно, moment
должен быть доступен глобально, в любом файле, как переменная, так и как пространство имен типов. В общем, что я хочу что-то вдоль этих линий:Тип: Как я могу сделать существующее пространство имен глобальным?
import * as _moment from 'moment';
declare global {
const moment: _moment.MomentStatic;
import moment = _moment;
}
Это не компилируется:
[ts] Imports are not permitted in module augmentations. Consider moving them to the enclosing external module.
[ts] Import declaration conflicts with local declaration of 'moment'
Есть обходной путь?
Я думаю, что может быть ошибка: https://github.com/Microsoft/TypeScript/issues/13175 –
Даже если это фиксируется, как я смогу объявить переменную с тем же именем, что и псевдоним импорта? В настоящее время TS не позволяет этого делать. – thorn
Должен быть объявлен 'const moment: _moment.Moment'? Я получаю 'undefined' в моей консоли, если я пытаюсь получить доступ к' moment.format' и тому подобное. –