globalThis является будущим.
// Way 1
var abc: number
globalThis.abc = 200 // no error
// Way2
declare var age: number
globalThis.age = 18 // no error
ПРИМЕЧАНИЕ: файл, который содержит выше кодов, не мог иметь никакого
import
оператор
До сих пор, это способы, которыми я выяснил для расширения глобального объекта.
Все волшебство прибывает от var
. Замена var
с let
или const
не будет работать.
я пытался расширить модуль
globalThis
на слияние объявления , но отказавший.
Это - то, как я зафиксировал его:
Шаги:
Объявленный глобальным пространством имен, для, например, custom.d.ts как указано ниже:
объявляют глобальный {пространство имен NodeJS {интерфейс Global {Конфигурация: {} } }} экспортируют глобальное значение по умолчанию;
вышеупомянутое Карты создало файл в "tsconfig.json" как указано ниже:
"typeRoots": ["src/types/custom.d.ts"]
Получают вышеупомянутую созданную глобальную переменную в любом из файлов как указано ниже:
console.log (global.config)
Примечание:
версия машинописного текста: "3.0.1".
В моем случае, требование состояло в том, чтобы установить глобальную переменную, прежде чем загрузит приложение, и переменная должна получить доступ всюду по зависимым объектам так, чтобы мы могли получить необходимые свойства конфигурации.
Hope это помогает!
Спасибо
Я провел часы пары для выяснения надлежащего способа сделать это. В моем случае я пытаюсь определить глобальную переменную "журнала", таким образом, шаги были:
1) настраивают Ваш tsconfig.json
для включения определенных типов (src/types
, папка, node_modules - ваше дело):
...other stuff...
"paths": {
"*": ["node_modules/*", "src/types/*"]
}
2) создают файл src/types/global.d.ts
со следующим содержанием ( никакой импорт! - это важно), не стесняйтесь изменяться any
для соответствия потребностям + использование window
интерфейс вместо NodeJS
, если Вы работаете с браузером:
/**
* IMPORTANT - do not use imports in this file!
* It will break global definition.
*/
declare namespace NodeJS {
export interface Global {
log: any;
}
}
declare var log: any;
3) теперь можно наконец использовать/реализовывать log
где его необходимое:
// in one file
global.log = someCoolLogger();
// in another file
log.info('hello world');
// or if its a variable
global.log = 'INFO'