Я пытаюсь прекратить использовать TSD для получения определений типов в проекте, который использует множество библиотек через глобальные переменные (параметр outFile
используется в tsconfig.json
, если это имеет значение). В частности, таким образом он использует библиотеку Moment. Moment предоставляет свои собственные определения типов как часть Пакет 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'
Есть ли обходной путь?
const moment: _moment.Moment
объявлять? Я получаюundefined
в моей консоли, если пытаюсь получить доступ кmoment.format
и т.п. - person Daniel Rosenwasser   schedule 28.12.2016moment
должен бытьmoment.MomentStatic
, а неmoment.Moment
. - person thorn0   schedule 28.12.2016